From 1836c415e6c686b8cc4ba8bb062a5abcc08e7761 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Thu, 23 May 2019 00:16:55 +0300 Subject: [PATCH] all: open-sourcing single-node version --- .dockerignore | 6 + .gitignore | 11 + LICENSE | 190 + Makefile | 64 + README.md | 433 +- app/victoria-metrics/Makefile | 21 + app/victoria-metrics/deployment/Dockerfile | 5 + app/victoria-metrics/main.go | 60 + app/vminsert/README.md | 1 + app/vminsert/common/insert_ctx.go | 106 + .../concurrencylimiter/concurrencylimiter.go | 34 + app/vminsert/graphite/parser.go | 176 + app/vminsert/graphite/parser_test.go | 133 + app/vminsert/graphite/parser_timing_test.go | 24 + app/vminsert/graphite/request_handler.go | 166 + app/vminsert/graphite/server.go | 137 + app/vminsert/influx/parser.go | 384 ++ app/vminsert/influx/parser_test.go | 341 ++ app/vminsert/influx/parser_timing_test.go | 20 + app/vminsert/influx/request_handler.go | 244 ++ app/vminsert/main.go | 84 + app/vminsert/opentsdb/parser.go | 175 + app/vminsert/opentsdb/parser_test.go | 203 + app/vminsert/opentsdb/parser_timing_test.go | 24 + app/vminsert/opentsdb/request_handler.go | 166 + app/vminsert/opentsdb/server.go | 137 + app/vminsert/prometheus/request_handler.go | 106 + app/vmselect/README.md | 2 + app/vmselect/main.go | 189 + app/vmselect/netstorage/fadvise_darwin.go | 9 + app/vmselect/netstorage/fadvise_linux.go | 15 + app/vmselect/netstorage/netstorage.go | 535 +++ app/vmselect/netstorage/tmp_blocks_file.go | 188 + .../netstorage/tmp_blocks_file_test.go | 150 + app/vmselect/prometheus/error_response.qtpl | 11 + .../prometheus/error_response.qtpl.go | 61 + app/vmselect/prometheus/export.qtpl | 96 + app/vmselect/prometheus/export.qtpl.go | 385 ++ app/vmselect/prometheus/federate.qtpl | 16 + app/vmselect/prometheus/federate.qtpl.go | 75 + .../prometheus/label_values_response.qtpl | 15 + .../prometheus/label_values_response.qtpl.go | 67 + app/vmselect/prometheus/labels_response.qtpl | 15 + .../prometheus/labels_response.qtpl.go | 67 + app/vmselect/prometheus/prometheus.go | 550 +++ .../prometheus/query_range_response.qtpl | 33 + .../prometheus/query_range_response.qtpl.go | 118 + app/vmselect/prometheus/query_response.qtpl | 32 + .../prometheus/query_response.qtpl.go | 94 + .../prometheus/series_count_response.qtpl | 9 + .../prometheus/series_count_response.qtpl.go | 57 + app/vmselect/prometheus/series_response.qtpl | 24 + .../prometheus/series_response.qtpl.go | 83 + app/vmselect/prometheus/util.qtpl | 47 + app/vmselect/prometheus/util.qtpl.go | 215 + app/vmselect/promql/aggr.go | 469 +++ app/vmselect/promql/aggr_test.go | 30 + app/vmselect/promql/arch_amd64.go | 3 + app/vmselect/promql/arch_arm.go | 3 + app/vmselect/promql/binary_op.go | 499 +++ app/vmselect/promql/binary_op_test.go | 125 + app/vmselect/promql/eval.go | 655 +++ app/vmselect/promql/exec.go | 216 + app/vmselect/promql/exec_test.go | 3593 +++++++++++++++++ app/vmselect/promql/lexer.go | 380 ++ app/vmselect/promql/lexer_test.go | 295 ++ app/vmselect/promql/parser.go | 1649 ++++++++ app/vmselect/promql/parser_test.go | 677 ++++ app/vmselect/promql/regexp_cache.go | 102 + app/vmselect/promql/rollup.go | 763 ++++ app/vmselect/promql/rollup_result_cache.go | 496 +++ .../promql/rollup_result_cache_test.go | 368 ++ app/vmselect/promql/rollup_test.go | 649 +++ app/vmselect/promql/rollup_timing_test.go | 43 + app/vmselect/promql/timeseries.go | 383 ++ app/vmselect/promql/timeseries_test.go | 104 + app/vmselect/promql/transform.go | 1200 ++++++ app/vmstorage/README.md | 5 + app/vmstorage/main.go | 455 +++ deployment/docker/Makefile | 42 + deployment/docker/builder/Dockerfile | 1 + deployment/docker/certs/Dockerfile | 3 + errcheck_excludes.txt | 2 + go.mod | 16 + go.sum | 48 + lib/buildinfo/version.go | 32 + lib/bytesutil/bytebuffer.go | 105 + lib/bytesutil/bytebuffer_test.go | 217 + lib/bytesutil/bytesutil.go | 33 + lib/bytesutil/bytesutil_test.go | 22 + lib/decimal/decimal.go | 353 ++ lib/decimal/decimal_test.go | 317 ++ lib/decimal/decimal_timing_test.go | 86 + lib/encoding/compress.go | 27 + lib/encoding/compress_test.go | 48 + lib/encoding/encoding.go | 350 ++ lib/encoding/encoding_test.go | 290 ++ lib/encoding/encoding_timing_test.go | 240 ++ lib/encoding/int.go | 296 ++ lib/encoding/int_test.go | 315 ++ lib/encoding/int_timing_test.go | 122 + lib/encoding/nearest_delta.go | 144 + lib/encoding/nearest_delta2.go | 83 + lib/encoding/nearest_delta2_test.go | 286 ++ lib/encoding/nearest_delta2_timing_test.go | 48 + lib/encoding/nearest_delta_test.go | 164 + lib/encoding/nearest_delta_timing_test.go | 48 + lib/filestream/filestream.go | 241 ++ lib/filestream/filestream_darwin.go | 9 + lib/filestream/filestream_linux.go | 39 + lib/filestream/filestream_test.go | 57 + lib/flagutil/array.go | 18 + lib/flagutil/array_test.go | 34 + lib/fs/fs.go | 276 ++ lib/httpserver/httpserver.go | 428 ++ lib/httpserver/metrics.go | 39 + lib/logger/flag.go | 22 + lib/logger/logger.go | 153 + lib/memory/memory.go | 36 + lib/memory/memory_darwin.go | 30 + lib/memory/memory_linux.go | 35 + lib/mergeset/block_header.go | 166 + lib/mergeset/block_stream_reader.go | 306 ++ lib/mergeset/block_stream_reader_test.go | 61 + lib/mergeset/block_stream_writer.go | 228 ++ lib/mergeset/encoding.go | 464 +++ lib/mergeset/encoding_test.go | 175 + lib/mergeset/encoding_timing_test.go | 59 + lib/mergeset/inmemory_part.go | 107 + lib/mergeset/merge.go | 177 + lib/mergeset/merge_test.go | 201 + lib/mergeset/metaindex_row.go | 123 + lib/mergeset/part.go | 389 ++ lib/mergeset/part_header.go | 171 + lib/mergeset/part_search.go | 382 ++ lib/mergeset/part_search_test.go | 164 + lib/mergeset/table.go | 1205 ++++++ lib/mergeset/table_search.go | 223 + lib/mergeset/table_search_test.go | 165 + lib/mergeset/table_search_timing_test.go | 111 + lib/mergeset/table_test.go | 283 ++ lib/netutil/conn.go | 119 + lib/netutil/tcplistener.go | 80 + lib/procutil/signal.go | 16 + lib/prompb/README.md | 14 + lib/prompb/remote.pb.go | 210 + lib/prompb/remote.proto | 23 + lib/prompb/types.pb.go | 455 +++ lib/prompb/types.proto | 34 + lib/prompb/util.go | 72 + lib/storage/block.go | 276 ++ lib/storage/block_header.go | 207 + lib/storage/block_header_test.go | 81 + lib/storage/block_stream_merger.go | 142 + lib/storage/block_stream_reader.go | 348 ++ lib/storage/block_stream_reader_test.go | 155 + .../block_stream_reader_timing_test.go | 57 + lib/storage/block_stream_writer.go | 222 + .../block_stream_writer_timing_test.go | 79 + lib/storage/index_db.go | 1750 ++++++++ lib/storage/index_db_test.go | 899 +++++ lib/storage/index_db_timing_test.go | 208 + lib/storage/inmemory_part.go | 70 + lib/storage/inmemory_part_test.go | 137 + lib/storage/inmemory_part_timing_test.go | 52 + lib/storage/merge.go | 205 + lib/storage/merge_test.go | 463 +++ lib/storage/merge_timing_test.go | 115 + lib/storage/metaindex_row.go | 166 + lib/storage/metaindex_row_test.go | 99 + lib/storage/metric_name.go | 653 +++ lib/storage/metric_name_test.go | 118 + lib/storage/part.go | 273 ++ lib/storage/part_header.go | 116 + lib/storage/part_header_test.go | 62 + lib/storage/part_search.go | 291 ++ lib/storage/part_search_test.go | 1431 +++++++ lib/storage/partition.go | 1492 +++++++ lib/storage/partition_search.go | 205 + lib/storage/partition_search_test.go | 279 ++ lib/storage/partition_test.go | 159 + lib/storage/raw_block.go | 23 + lib/storage/raw_row.go | 160 + lib/storage/search.go | 341 ++ lib/storage/search_test.go | 268 ++ lib/storage/storage.go | 792 ++++ lib/storage/storage_test.go | 616 +++ lib/storage/storage_timing_test.go | 58 + lib/storage/table.go | 488 +++ lib/storage/table_search.go | 209 + lib/storage/table_search_test.go | 288 ++ lib/storage/table_search_timing_test.go | 139 + lib/storage/table_test.go | 59 + lib/storage/table_timing_test.go | 113 + lib/storage/tag_filters.go | 685 ++++ lib/storage/tag_filters_test.go | 474 +++ lib/storage/tag_filters_timing_test.go | 125 + lib/storage/time.go | 69 + lib/storage/time_test.go | 54 + lib/storage/tsid.go | 121 + lib/storage/tsid_test.go | 152 + lib/syncwg/syncwg.go | 49 + .../VictoriaMetrics/fastcache/.travis.yml | 20 + .../VictoriaMetrics/fastcache/LICENSE | 22 + .../VictoriaMetrics/fastcache/README.md | 116 + .../VictoriaMetrics/fastcache/bigcache.go | 152 + .../VictoriaMetrics/fastcache/fastcache.go | 398 ++ .../VictoriaMetrics/fastcache/file.go | 397 ++ .../VictoriaMetrics/fastcache/go.mod | 11 + .../VictoriaMetrics/fastcache/go.sum | 24 + .../VictoriaMetrics/fastcache/malloc_heap.go | 11 + .../VictoriaMetrics/fastcache/malloc_mmap.go | 52 + .../VictoriaMetrics/metrics/.travis.yml | 20 + .../VictoriaMetrics/metrics/LICENSE | 22 + .../VictoriaMetrics/metrics/README.md | 87 + .../VictoriaMetrics/metrics/counter.go | 104 + .../VictoriaMetrics/metrics/gauge.go | 100 + .../github.com/VictoriaMetrics/metrics/go.mod | 3 + .../github.com/VictoriaMetrics/metrics/go.sum | 4 + .../VictoriaMetrics/metrics/metrics.go | 142 + .../VictoriaMetrics/metrics/summary.go | 259 ++ .../VictoriaMetrics/metrics/validator.go | 84 + .../github.com/cespare/xxhash/v2/.travis.yml | 8 + .../github.com/cespare/xxhash/v2/LICENSE.txt | 22 + vendor/github.com/cespare/xxhash/v2/README.md | 55 + vendor/github.com/cespare/xxhash/v2/go.mod | 7 + vendor/github.com/cespare/xxhash/v2/go.sum | 6 + vendor/github.com/cespare/xxhash/v2/xxhash.go | 236 ++ .../cespare/xxhash/v2/xxhash_amd64.go | 13 + .../cespare/xxhash/v2/xxhash_amd64.s | 215 + .../cespare/xxhash/v2/xxhash_other.go | 76 + .../cespare/xxhash/v2/xxhash_safe.go | 15 + .../cespare/xxhash/v2/xxhash_unsafe.go | 46 + vendor/github.com/golang/snappy/.gitignore | 16 + vendor/github.com/golang/snappy/AUTHORS | 15 + vendor/github.com/golang/snappy/CONTRIBUTORS | 37 + vendor/github.com/golang/snappy/LICENSE | 27 + vendor/github.com/golang/snappy/README | 107 + vendor/github.com/golang/snappy/decode.go | 237 ++ .../github.com/golang/snappy/decode_amd64.go | 14 + .../github.com/golang/snappy/decode_amd64.s | 490 +++ .../github.com/golang/snappy/decode_other.go | 101 + vendor/github.com/golang/snappy/encode.go | 285 ++ .../github.com/golang/snappy/encode_amd64.go | 29 + .../github.com/golang/snappy/encode_amd64.s | 730 ++++ .../github.com/golang/snappy/encode_other.go | 238 ++ vendor/github.com/golang/snappy/go.mod | 1 + vendor/github.com/golang/snappy/snappy.go | 98 + .../valyala/bytebufferpool/.travis.yml | 15 + .../github.com/valyala/bytebufferpool/LICENSE | 22 + .../valyala/bytebufferpool/README.md | 21 + .../valyala/bytebufferpool/bytebuffer.go | 111 + .../github.com/valyala/bytebufferpool/doc.go | 7 + .../github.com/valyala/bytebufferpool/pool.go | 151 + vendor/github.com/valyala/fastjson/LICENSE | 22 + .../valyala/fastjson/fastfloat/parse.go | 231 ++ .../github.com/valyala/fastrand/.travis.yml | 16 + vendor/github.com/valyala/fastrand/LICENSE | 21 + vendor/github.com/valyala/fastrand/README.md | 76 + .../github.com/valyala/fastrand/fastrand.go | 74 + vendor/github.com/valyala/fastrand/go.mod | 1 + vendor/github.com/valyala/gozstd/.gitignore | 1 + vendor/github.com/valyala/gozstd/.travis.yml | 20 + vendor/github.com/valyala/gozstd/LICENSE | 22 + vendor/github.com/valyala/gozstd/Makefile | 45 + vendor/github.com/valyala/gozstd/README.md | 73 + vendor/github.com/valyala/gozstd/dict.go | 191 + vendor/github.com/valyala/gozstd/go.mod | 1 + vendor/github.com/valyala/gozstd/gozstd.go | 422 ++ .../valyala/gozstd/libzstd_darwin_amd64.a | Bin 0 -> 856880 bytes .../valyala/gozstd/libzstd_darwin_amd64.go | 6 + .../valyala/gozstd/libzstd_linux_amd64.a | Bin 0 -> 874456 bytes .../valyala/gozstd/libzstd_linux_amd64.go | 6 + .../valyala/gozstd/libzstd_linux_arm.a | Bin 0 -> 755008 bytes .../valyala/gozstd/libzstd_linux_arm.go | 6 + .../valyala/gozstd/libzstd_linux_arm64.a | Bin 0 -> 728432 bytes .../valyala/gozstd/libzstd_linux_arm64.go | 6 + .../valyala/gozstd/libzstd_windows_amd64.a | Bin 0 -> 661504 bytes .../valyala/gozstd/libzstd_windows_amd64.go | 6 + vendor/github.com/valyala/gozstd/reader.go | 237 ++ vendor/github.com/valyala/gozstd/stream.go | 128 + vendor/github.com/valyala/gozstd/writer.go | 292 ++ vendor/github.com/valyala/gozstd/zdict.h | 277 ++ vendor/github.com/valyala/gozstd/zstd.h | 1913 +++++++++ .../github.com/valyala/gozstd/zstd_errors.h | 93 + vendor/github.com/valyala/histogram/LICENSE | 21 + vendor/github.com/valyala/histogram/README.md | 9 + vendor/github.com/valyala/histogram/go.mod | 3 + vendor/github.com/valyala/histogram/go.sum | 2 + .../github.com/valyala/histogram/histogram.go | 121 + .../valyala/quicktemplate/.gitignore | 1 + .../valyala/quicktemplate/.travis.yml | 19 + .../github.com/valyala/quicktemplate/LICENSE | 22 + .../valyala/quicktemplate/QuickTemplate.xml | 16 + .../valyala/quicktemplate/README.md | 621 +++ .../valyala/quicktemplate/bytebuffer.go | 45 + .../github.com/valyala/quicktemplate/doc.go | 6 + .../github.com/valyala/quicktemplate/go.mod | 8 + .../github.com/valyala/quicktemplate/go.sum | 12 + .../valyala/quicktemplate/htmlescapewriter.go | 62 + .../valyala/quicktemplate/jsonstring.go | 93 + .../valyala/quicktemplate/urlencode.go | 32 + .../github.com/valyala/quicktemplate/util.go | 3 + .../valyala/quicktemplate/util_appengine.go | 11 + .../valyala/quicktemplate/util_noappengine.go | 22 + .../valyala/quicktemplate/writer.go | 188 + vendor/golang.org/x/sys/AUTHORS | 3 + vendor/golang.org/x/sys/CONTRIBUTORS | 3 + vendor/golang.org/x/sys/LICENSE | 27 + vendor/golang.org/x/sys/PATENTS | 22 + vendor/golang.org/x/sys/unix/.gitignore | 2 + vendor/golang.org/x/sys/unix/README.md | 173 + .../golang.org/x/sys/unix/affinity_linux.go | 124 + vendor/golang.org/x/sys/unix/aliases.go | 14 + vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 17 + vendor/golang.org/x/sys/unix/asm_darwin_386.s | 29 + .../golang.org/x/sys/unix/asm_darwin_amd64.s | 29 + vendor/golang.org/x/sys/unix/asm_darwin_arm.s | 30 + .../golang.org/x/sys/unix/asm_darwin_arm64.s | 30 + .../x/sys/unix/asm_dragonfly_amd64.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_386.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_amd64.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_arm64.s | 29 + vendor/golang.org/x/sys/unix/asm_linux_386.s | 65 + .../golang.org/x/sys/unix/asm_linux_amd64.s | 57 + vendor/golang.org/x/sys/unix/asm_linux_arm.s | 56 + .../golang.org/x/sys/unix/asm_linux_arm64.s | 52 + .../golang.org/x/sys/unix/asm_linux_mips64x.s | 56 + .../golang.org/x/sys/unix/asm_linux_mipsx.s | 54 + .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 44 + .../golang.org/x/sys/unix/asm_linux_s390x.s | 56 + vendor/golang.org/x/sys/unix/asm_netbsd_386.s | 29 + .../golang.org/x/sys/unix/asm_netbsd_amd64.s | 29 + vendor/golang.org/x/sys/unix/asm_netbsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_netbsd_arm64.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_386.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_amd64.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_arm64.s | 29 + .../golang.org/x/sys/unix/asm_solaris_amd64.s | 17 + .../golang.org/x/sys/unix/bluetooth_linux.go | 35 + vendor/golang.org/x/sys/unix/cap_freebsd.go | 195 + vendor/golang.org/x/sys/unix/constants.go | 13 + vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 27 + vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 29 + vendor/golang.org/x/sys/unix/dev_darwin.go | 24 + vendor/golang.org/x/sys/unix/dev_dragonfly.go | 30 + vendor/golang.org/x/sys/unix/dev_freebsd.go | 30 + vendor/golang.org/x/sys/unix/dev_linux.go | 42 + vendor/golang.org/x/sys/unix/dev_netbsd.go | 29 + vendor/golang.org/x/sys/unix/dev_openbsd.go | 29 + vendor/golang.org/x/sys/unix/dirent.go | 17 + vendor/golang.org/x/sys/unix/endian_big.go | 9 + vendor/golang.org/x/sys/unix/endian_little.go | 9 + vendor/golang.org/x/sys/unix/env_unix.go | 31 + .../x/sys/unix/errors_freebsd_386.go | 227 ++ .../x/sys/unix/errors_freebsd_amd64.go | 227 ++ .../x/sys/unix/errors_freebsd_arm.go | 226 ++ vendor/golang.org/x/sys/unix/fcntl.go | 32 + vendor/golang.org/x/sys/unix/fcntl_darwin.go | 18 + .../x/sys/unix/fcntl_linux_32bit.go | 13 + vendor/golang.org/x/sys/unix/gccgo.go | 62 + vendor/golang.org/x/sys/unix/gccgo_c.c | 39 + .../x/sys/unix/gccgo_linux_amd64.go | 20 + vendor/golang.org/x/sys/unix/ioctl.go | 30 + vendor/golang.org/x/sys/unix/mkall.sh | 227 ++ vendor/golang.org/x/sys/unix/mkerrors.sh | 661 +++ vendor/golang.org/x/sys/unix/pagesize_unix.go | 15 + .../golang.org/x/sys/unix/pledge_openbsd.go | 163 + vendor/golang.org/x/sys/unix/race.go | 30 + vendor/golang.org/x/sys/unix/race0.go | 25 + .../golang.org/x/sys/unix/sockcmsg_linux.go | 36 + vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 120 + vendor/golang.org/x/sys/unix/str.go | 26 + vendor/golang.org/x/sys/unix/syscall.go | 53 + vendor/golang.org/x/sys/unix/syscall_aix.go | 557 +++ .../golang.org/x/sys/unix/syscall_aix_ppc.go | 34 + .../x/sys/unix/syscall_aix_ppc64.go | 34 + vendor/golang.org/x/sys/unix/syscall_bsd.go | 624 +++ .../golang.org/x/sys/unix/syscall_darwin.go | 706 ++++ .../x/sys/unix/syscall_darwin_386.go | 63 + .../x/sys/unix/syscall_darwin_amd64.go | 63 + .../x/sys/unix/syscall_darwin_arm.go | 64 + .../x/sys/unix/syscall_darwin_arm64.go | 66 + .../x/sys/unix/syscall_darwin_libSystem.go | 31 + .../x/sys/unix/syscall_dragonfly.go | 539 +++ .../x/sys/unix/syscall_dragonfly_amd64.go | 52 + .../golang.org/x/sys/unix/syscall_freebsd.go | 824 ++++ .../x/sys/unix/syscall_freebsd_386.go | 52 + .../x/sys/unix/syscall_freebsd_amd64.go | 52 + .../x/sys/unix/syscall_freebsd_arm.go | 52 + .../x/sys/unix/syscall_freebsd_arm64.go | 52 + vendor/golang.org/x/sys/unix/syscall_linux.go | 1847 +++++++++ .../x/sys/unix/syscall_linux_386.go | 386 ++ .../x/sys/unix/syscall_linux_amd64.go | 190 + .../x/sys/unix/syscall_linux_amd64_gc.go | 13 + .../x/sys/unix/syscall_linux_arm.go | 274 ++ .../x/sys/unix/syscall_linux_arm64.go | 223 + .../golang.org/x/sys/unix/syscall_linux_gc.go | 14 + .../x/sys/unix/syscall_linux_gc_386.go | 16 + .../x/sys/unix/syscall_linux_gccgo_386.go | 30 + .../x/sys/unix/syscall_linux_gccgo_arm.go | 20 + .../x/sys/unix/syscall_linux_mips64x.go | 222 + .../x/sys/unix/syscall_linux_mipsx.go | 234 ++ .../x/sys/unix/syscall_linux_ppc64x.go | 152 + .../x/sys/unix/syscall_linux_riscv64.go | 226 ++ .../x/sys/unix/syscall_linux_s390x.go | 338 ++ .../x/sys/unix/syscall_linux_sparc64.go | 147 + .../golang.org/x/sys/unix/syscall_netbsd.go | 622 +++ .../x/sys/unix/syscall_netbsd_386.go | 33 + .../x/sys/unix/syscall_netbsd_amd64.go | 33 + .../x/sys/unix/syscall_netbsd_arm.go | 33 + .../x/sys/unix/syscall_netbsd_arm64.go | 33 + .../golang.org/x/sys/unix/syscall_openbsd.go | 416 ++ .../x/sys/unix/syscall_openbsd_386.go | 37 + .../x/sys/unix/syscall_openbsd_amd64.go | 37 + .../x/sys/unix/syscall_openbsd_arm.go | 37 + .../x/sys/unix/syscall_openbsd_arm64.go | 37 + .../golang.org/x/sys/unix/syscall_solaris.go | 737 ++++ .../x/sys/unix/syscall_solaris_amd64.go | 23 + vendor/golang.org/x/sys/unix/syscall_unix.go | 431 ++ .../golang.org/x/sys/unix/syscall_unix_gc.go | 15 + .../x/sys/unix/syscall_unix_gc_ppc64x.go | 24 + vendor/golang.org/x/sys/unix/timestruct.go | 82 + .../golang.org/x/sys/unix/unveil_openbsd.go | 42 + vendor/golang.org/x/sys/unix/xattr_bsd.go | 240 ++ .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1374 +++++++ .../x/sys/unix/zerrors_aix_ppc64.go | 1375 +++++++ .../x/sys/unix/zerrors_darwin_386.go | 1783 ++++++++ .../x/sys/unix/zerrors_darwin_amd64.go | 1783 ++++++++ .../x/sys/unix/zerrors_darwin_arm.go | 1783 ++++++++ .../x/sys/unix/zerrors_darwin_arm64.go | 1783 ++++++++ .../x/sys/unix/zerrors_dragonfly_amd64.go | 1650 ++++++++ .../x/sys/unix/zerrors_freebsd_386.go | 1793 ++++++++ .../x/sys/unix/zerrors_freebsd_amd64.go | 1794 ++++++++ .../x/sys/unix/zerrors_freebsd_arm.go | 1802 +++++++++ .../x/sys/unix/zerrors_freebsd_arm64.go | 1794 ++++++++ .../x/sys/unix/zerrors_linux_386.go | 2839 +++++++++++++ .../x/sys/unix/zerrors_linux_amd64.go | 2839 +++++++++++++ .../x/sys/unix/zerrors_linux_arm.go | 2845 +++++++++++++ .../x/sys/unix/zerrors_linux_arm64.go | 2830 +++++++++++++ .../x/sys/unix/zerrors_linux_mips.go | 2846 +++++++++++++ .../x/sys/unix/zerrors_linux_mips64.go | 2846 +++++++++++++ .../x/sys/unix/zerrors_linux_mips64le.go | 2846 +++++++++++++ .../x/sys/unix/zerrors_linux_mipsle.go | 2846 +++++++++++++ .../x/sys/unix/zerrors_linux_ppc64.go | 2901 +++++++++++++ .../x/sys/unix/zerrors_linux_ppc64le.go | 2901 +++++++++++++ .../x/sys/unix/zerrors_linux_riscv64.go | 2826 +++++++++++++ .../x/sys/unix/zerrors_linux_s390x.go | 2899 +++++++++++++ .../x/sys/unix/zerrors_linux_sparc64.go | 2895 +++++++++++++ .../x/sys/unix/zerrors_netbsd_386.go | 1772 ++++++++ .../x/sys/unix/zerrors_netbsd_amd64.go | 1762 ++++++++ .../x/sys/unix/zerrors_netbsd_arm.go | 1751 ++++++++ .../x/sys/unix/zerrors_netbsd_arm64.go | 1762 ++++++++ .../x/sys/unix/zerrors_openbsd_386.go | 1654 ++++++++ .../x/sys/unix/zerrors_openbsd_amd64.go | 1765 ++++++++ .../x/sys/unix/zerrors_openbsd_arm.go | 1656 ++++++++ .../x/sys/unix/zerrors_openbsd_arm64.go | 1789 ++++++++ .../x/sys/unix/zerrors_solaris_amd64.go | 1532 +++++++ .../golang.org/x/sys/unix/zptrace386_linux.go | 80 + .../golang.org/x/sys/unix/zptracearm_linux.go | 41 + .../x/sys/unix/zptracemips_linux.go | 50 + .../x/sys/unix/zptracemipsle_linux.go | 50 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1484 +++++++ .../x/sys/unix/zsyscall_aix_ppc64.go | 1442 +++++++ .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1192 ++++++ .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1070 +++++ .../x/sys/unix/zsyscall_darwin_386.1_11.go | 1810 +++++++++ .../x/sys/unix/zsyscall_darwin_386.go | 2505 ++++++++++++ .../x/sys/unix/zsyscall_darwin_386.s | 284 ++ .../x/sys/unix/zsyscall_darwin_amd64.1_11.go | 1810 +++++++++ .../x/sys/unix/zsyscall_darwin_amd64.go | 2520 ++++++++++++ .../x/sys/unix/zsyscall_darwin_amd64.s | 286 ++ .../x/sys/unix/zsyscall_darwin_arm.1_11.go | 1793 ++++++++ .../x/sys/unix/zsyscall_darwin_arm.go | 2483 ++++++++++++ .../x/sys/unix/zsyscall_darwin_arm.s | 282 ++ .../x/sys/unix/zsyscall_darwin_arm64.1_11.go | 1793 ++++++++ .../x/sys/unix/zsyscall_darwin_arm64.go | 2483 ++++++++++++ .../x/sys/unix/zsyscall_darwin_arm64.s | 282 ++ .../x/sys/unix/zsyscall_dragonfly_amd64.go | 1659 ++++++++ .../x/sys/unix/zsyscall_freebsd_386.go | 2015 +++++++++ .../x/sys/unix/zsyscall_freebsd_amd64.go | 2015 +++++++++ .../x/sys/unix/zsyscall_freebsd_arm.go | 2015 +++++++++ .../x/sys/unix/zsyscall_freebsd_arm64.go | 2015 +++++++++ .../x/sys/unix/zsyscall_linux_386.go | 2246 +++++++++++ .../x/sys/unix/zsyscall_linux_amd64.go | 2413 +++++++++++ .../x/sys/unix/zsyscall_linux_arm.go | 2368 +++++++++++ .../x/sys/unix/zsyscall_linux_arm64.go | 2270 +++++++++++ .../x/sys/unix/zsyscall_linux_mips.go | 2426 +++++++++++ .../x/sys/unix/zsyscall_linux_mips64.go | 2397 +++++++++++ .../x/sys/unix/zsyscall_linux_mips64le.go | 2397 +++++++++++ .../x/sys/unix/zsyscall_linux_mipsle.go | 2426 +++++++++++ .../x/sys/unix/zsyscall_linux_ppc64.go | 2475 ++++++++++++ .../x/sys/unix/zsyscall_linux_ppc64le.go | 2475 ++++++++++++ .../x/sys/unix/zsyscall_linux_riscv64.go | 2250 +++++++++++ .../x/sys/unix/zsyscall_linux_s390x.go | 2245 ++++++++++ .../x/sys/unix/zsyscall_linux_sparc64.go | 2408 +++++++++++ .../x/sys/unix/zsyscall_netbsd_386.go | 1826 +++++++++ .../x/sys/unix/zsyscall_netbsd_amd64.go | 1826 +++++++++ .../x/sys/unix/zsyscall_netbsd_arm.go | 1826 +++++++++ .../x/sys/unix/zsyscall_netbsd_arm64.go | 1826 +++++++++ .../x/sys/unix/zsyscall_openbsd_386.go | 1692 ++++++++ .../x/sys/unix/zsyscall_openbsd_amd64.go | 1692 ++++++++ .../x/sys/unix/zsyscall_openbsd_arm.go | 1692 ++++++++ .../x/sys/unix/zsyscall_openbsd_arm64.go | 1692 ++++++++ .../x/sys/unix/zsyscall_solaris_amd64.go | 1953 +++++++++ .../x/sys/unix/zsysctl_openbsd_386.go | 272 ++ .../x/sys/unix/zsysctl_openbsd_amd64.go | 270 ++ .../x/sys/unix/zsysctl_openbsd_arm.go | 272 ++ .../x/sys/unix/zsysctl_openbsd_arm64.go | 275 ++ .../x/sys/unix/zsysnum_darwin_386.go | 436 ++ .../x/sys/unix/zsysnum_darwin_amd64.go | 438 ++ .../x/sys/unix/zsysnum_darwin_arm.go | 436 ++ .../x/sys/unix/zsysnum_darwin_arm64.go | 436 ++ .../x/sys/unix/zsysnum_dragonfly_amd64.go | 315 ++ .../x/sys/unix/zsysnum_freebsd_386.go | 403 ++ .../x/sys/unix/zsysnum_freebsd_amd64.go | 403 ++ .../x/sys/unix/zsysnum_freebsd_arm.go | 403 ++ .../x/sys/unix/zsysnum_freebsd_arm64.go | 395 ++ .../x/sys/unix/zsysnum_linux_386.go | 392 ++ .../x/sys/unix/zsysnum_linux_amd64.go | 344 ++ .../x/sys/unix/zsysnum_linux_arm.go | 364 ++ .../x/sys/unix/zsysnum_linux_arm64.go | 289 ++ .../x/sys/unix/zsysnum_linux_mips.go | 377 ++ .../x/sys/unix/zsysnum_linux_mips64.go | 337 ++ .../x/sys/unix/zsysnum_linux_mips64le.go | 337 ++ .../x/sys/unix/zsysnum_linux_mipsle.go | 377 ++ .../x/sys/unix/zsysnum_linux_ppc64.go | 375 ++ .../x/sys/unix/zsysnum_linux_ppc64le.go | 375 ++ .../x/sys/unix/zsysnum_linux_riscv64.go | 288 ++ .../x/sys/unix/zsysnum_linux_s390x.go | 337 ++ .../x/sys/unix/zsysnum_linux_sparc64.go | 351 ++ .../x/sys/unix/zsysnum_netbsd_386.go | 274 ++ .../x/sys/unix/zsysnum_netbsd_amd64.go | 274 ++ .../x/sys/unix/zsysnum_netbsd_arm.go | 274 ++ .../x/sys/unix/zsysnum_netbsd_arm64.go | 274 ++ .../x/sys/unix/zsysnum_openbsd_386.go | 218 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 218 + .../x/sys/unix/zsysnum_openbsd_arm.go | 218 + .../x/sys/unix/zsysnum_openbsd_arm64.go | 217 + .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 345 ++ .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 350 ++ .../x/sys/unix/ztypes_darwin_386.go | 499 +++ .../x/sys/unix/ztypes_darwin_amd64.go | 509 +++ .../x/sys/unix/ztypes_darwin_arm.go | 500 +++ .../x/sys/unix/ztypes_darwin_arm64.go | 509 +++ .../x/sys/unix/ztypes_dragonfly_amd64.go | 469 +++ .../x/sys/unix/ztypes_freebsd_386.go | 603 +++ .../x/sys/unix/ztypes_freebsd_amd64.go | 602 +++ .../x/sys/unix/ztypes_freebsd_arm.go | 602 +++ .../x/sys/unix/ztypes_freebsd_arm64.go | 602 +++ .../golang.org/x/sys/unix/ztypes_linux_386.go | 2315 +++++++++++ .../x/sys/unix/ztypes_linux_amd64.go | 2328 +++++++++++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2306 +++++++++++ .../x/sys/unix/ztypes_linux_arm64.go | 2307 +++++++++++ .../x/sys/unix/ztypes_linux_mips.go | 2312 +++++++++++ .../x/sys/unix/ztypes_linux_mips64.go | 2309 +++++++++++ .../x/sys/unix/ztypes_linux_mips64le.go | 2309 +++++++++++ .../x/sys/unix/ztypes_linux_mipsle.go | 2312 +++++++++++ .../x/sys/unix/ztypes_linux_ppc64.go | 2317 +++++++++++ .../x/sys/unix/ztypes_linux_ppc64le.go | 2317 +++++++++++ .../x/sys/unix/ztypes_linux_riscv64.go | 2334 +++++++++++ .../x/sys/unix/ztypes_linux_s390x.go | 2331 +++++++++++ .../x/sys/unix/ztypes_linux_sparc64.go | 2312 +++++++++++ .../x/sys/unix/ztypes_netbsd_386.go | 465 +++ .../x/sys/unix/ztypes_netbsd_amd64.go | 472 +++ .../x/sys/unix/ztypes_netbsd_arm.go | 470 +++ .../x/sys/unix/ztypes_netbsd_arm64.go | 472 +++ .../x/sys/unix/ztypes_openbsd_386.go | 570 +++ .../x/sys/unix/ztypes_openbsd_amd64.go | 570 +++ .../x/sys/unix/ztypes_openbsd_arm.go | 571 +++ .../x/sys/unix/ztypes_openbsd_arm64.go | 564 +++ .../x/sys/unix/ztypes_solaris_amd64.go | 442 ++ vendor/modules.txt | 22 + 575 files changed, 276569 insertions(+), 37 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 app/victoria-metrics/Makefile create mode 100644 app/victoria-metrics/deployment/Dockerfile create mode 100644 app/victoria-metrics/main.go create mode 100644 app/vminsert/README.md create mode 100644 app/vminsert/common/insert_ctx.go create mode 100644 app/vminsert/concurrencylimiter/concurrencylimiter.go create mode 100644 app/vminsert/graphite/parser.go create mode 100644 app/vminsert/graphite/parser_test.go create mode 100644 app/vminsert/graphite/parser_timing_test.go create mode 100644 app/vminsert/graphite/request_handler.go create mode 100644 app/vminsert/graphite/server.go create mode 100644 app/vminsert/influx/parser.go create mode 100644 app/vminsert/influx/parser_test.go create mode 100644 app/vminsert/influx/parser_timing_test.go create mode 100644 app/vminsert/influx/request_handler.go create mode 100644 app/vminsert/main.go create mode 100644 app/vminsert/opentsdb/parser.go create mode 100644 app/vminsert/opentsdb/parser_test.go create mode 100644 app/vminsert/opentsdb/parser_timing_test.go create mode 100644 app/vminsert/opentsdb/request_handler.go create mode 100644 app/vminsert/opentsdb/server.go create mode 100644 app/vminsert/prometheus/request_handler.go create mode 100644 app/vmselect/README.md create mode 100644 app/vmselect/main.go create mode 100644 app/vmselect/netstorage/fadvise_darwin.go create mode 100644 app/vmselect/netstorage/fadvise_linux.go create mode 100644 app/vmselect/netstorage/netstorage.go create mode 100644 app/vmselect/netstorage/tmp_blocks_file.go create mode 100644 app/vmselect/netstorage/tmp_blocks_file_test.go create mode 100644 app/vmselect/prometheus/error_response.qtpl create mode 100644 app/vmselect/prometheus/error_response.qtpl.go create mode 100644 app/vmselect/prometheus/export.qtpl create mode 100644 app/vmselect/prometheus/export.qtpl.go create mode 100644 app/vmselect/prometheus/federate.qtpl create mode 100644 app/vmselect/prometheus/federate.qtpl.go create mode 100644 app/vmselect/prometheus/label_values_response.qtpl create mode 100644 app/vmselect/prometheus/label_values_response.qtpl.go create mode 100644 app/vmselect/prometheus/labels_response.qtpl create mode 100644 app/vmselect/prometheus/labels_response.qtpl.go create mode 100644 app/vmselect/prometheus/prometheus.go create mode 100644 app/vmselect/prometheus/query_range_response.qtpl create mode 100644 app/vmselect/prometheus/query_range_response.qtpl.go create mode 100644 app/vmselect/prometheus/query_response.qtpl create mode 100644 app/vmselect/prometheus/query_response.qtpl.go create mode 100644 app/vmselect/prometheus/series_count_response.qtpl create mode 100644 app/vmselect/prometheus/series_count_response.qtpl.go create mode 100644 app/vmselect/prometheus/series_response.qtpl create mode 100644 app/vmselect/prometheus/series_response.qtpl.go create mode 100644 app/vmselect/prometheus/util.qtpl create mode 100644 app/vmselect/prometheus/util.qtpl.go create mode 100644 app/vmselect/promql/aggr.go create mode 100644 app/vmselect/promql/aggr_test.go create mode 100644 app/vmselect/promql/arch_amd64.go create mode 100644 app/vmselect/promql/arch_arm.go create mode 100644 app/vmselect/promql/binary_op.go create mode 100644 app/vmselect/promql/binary_op_test.go create mode 100644 app/vmselect/promql/eval.go create mode 100644 app/vmselect/promql/exec.go create mode 100644 app/vmselect/promql/exec_test.go create mode 100644 app/vmselect/promql/lexer.go create mode 100644 app/vmselect/promql/lexer_test.go create mode 100644 app/vmselect/promql/parser.go create mode 100644 app/vmselect/promql/parser_test.go create mode 100644 app/vmselect/promql/regexp_cache.go create mode 100644 app/vmselect/promql/rollup.go create mode 100644 app/vmselect/promql/rollup_result_cache.go create mode 100644 app/vmselect/promql/rollup_result_cache_test.go create mode 100644 app/vmselect/promql/rollup_test.go create mode 100644 app/vmselect/promql/rollup_timing_test.go create mode 100644 app/vmselect/promql/timeseries.go create mode 100644 app/vmselect/promql/timeseries_test.go create mode 100644 app/vmselect/promql/transform.go create mode 100644 app/vmstorage/README.md create mode 100644 app/vmstorage/main.go create mode 100644 deployment/docker/Makefile create mode 100644 deployment/docker/builder/Dockerfile create mode 100644 deployment/docker/certs/Dockerfile create mode 100644 errcheck_excludes.txt create mode 100644 go.mod create mode 100644 go.sum create mode 100644 lib/buildinfo/version.go create mode 100644 lib/bytesutil/bytebuffer.go create mode 100644 lib/bytesutil/bytebuffer_test.go create mode 100644 lib/bytesutil/bytesutil.go create mode 100644 lib/bytesutil/bytesutil_test.go create mode 100644 lib/decimal/decimal.go create mode 100644 lib/decimal/decimal_test.go create mode 100644 lib/decimal/decimal_timing_test.go create mode 100644 lib/encoding/compress.go create mode 100644 lib/encoding/compress_test.go create mode 100644 lib/encoding/encoding.go create mode 100644 lib/encoding/encoding_test.go create mode 100644 lib/encoding/encoding_timing_test.go create mode 100644 lib/encoding/int.go create mode 100644 lib/encoding/int_test.go create mode 100644 lib/encoding/int_timing_test.go create mode 100644 lib/encoding/nearest_delta.go create mode 100644 lib/encoding/nearest_delta2.go create mode 100644 lib/encoding/nearest_delta2_test.go create mode 100644 lib/encoding/nearest_delta2_timing_test.go create mode 100644 lib/encoding/nearest_delta_test.go create mode 100644 lib/encoding/nearest_delta_timing_test.go create mode 100644 lib/filestream/filestream.go create mode 100644 lib/filestream/filestream_darwin.go create mode 100644 lib/filestream/filestream_linux.go create mode 100644 lib/filestream/filestream_test.go create mode 100644 lib/flagutil/array.go create mode 100644 lib/flagutil/array_test.go create mode 100644 lib/fs/fs.go create mode 100644 lib/httpserver/httpserver.go create mode 100644 lib/httpserver/metrics.go create mode 100644 lib/logger/flag.go create mode 100644 lib/logger/logger.go create mode 100644 lib/memory/memory.go create mode 100644 lib/memory/memory_darwin.go create mode 100644 lib/memory/memory_linux.go create mode 100644 lib/mergeset/block_header.go create mode 100644 lib/mergeset/block_stream_reader.go create mode 100644 lib/mergeset/block_stream_reader_test.go create mode 100644 lib/mergeset/block_stream_writer.go create mode 100644 lib/mergeset/encoding.go create mode 100644 lib/mergeset/encoding_test.go create mode 100644 lib/mergeset/encoding_timing_test.go create mode 100644 lib/mergeset/inmemory_part.go create mode 100644 lib/mergeset/merge.go create mode 100644 lib/mergeset/merge_test.go create mode 100644 lib/mergeset/metaindex_row.go create mode 100644 lib/mergeset/part.go create mode 100644 lib/mergeset/part_header.go create mode 100644 lib/mergeset/part_search.go create mode 100644 lib/mergeset/part_search_test.go create mode 100644 lib/mergeset/table.go create mode 100644 lib/mergeset/table_search.go create mode 100644 lib/mergeset/table_search_test.go create mode 100644 lib/mergeset/table_search_timing_test.go create mode 100644 lib/mergeset/table_test.go create mode 100644 lib/netutil/conn.go create mode 100644 lib/netutil/tcplistener.go create mode 100644 lib/procutil/signal.go create mode 100644 lib/prompb/README.md create mode 100644 lib/prompb/remote.pb.go create mode 100644 lib/prompb/remote.proto create mode 100644 lib/prompb/types.pb.go create mode 100644 lib/prompb/types.proto create mode 100644 lib/prompb/util.go create mode 100644 lib/storage/block.go create mode 100644 lib/storage/block_header.go create mode 100644 lib/storage/block_header_test.go create mode 100644 lib/storage/block_stream_merger.go create mode 100644 lib/storage/block_stream_reader.go create mode 100644 lib/storage/block_stream_reader_test.go create mode 100644 lib/storage/block_stream_reader_timing_test.go create mode 100644 lib/storage/block_stream_writer.go create mode 100644 lib/storage/block_stream_writer_timing_test.go create mode 100644 lib/storage/index_db.go create mode 100644 lib/storage/index_db_test.go create mode 100644 lib/storage/index_db_timing_test.go create mode 100644 lib/storage/inmemory_part.go create mode 100644 lib/storage/inmemory_part_test.go create mode 100644 lib/storage/inmemory_part_timing_test.go create mode 100644 lib/storage/merge.go create mode 100644 lib/storage/merge_test.go create mode 100644 lib/storage/merge_timing_test.go create mode 100644 lib/storage/metaindex_row.go create mode 100644 lib/storage/metaindex_row_test.go create mode 100644 lib/storage/metric_name.go create mode 100644 lib/storage/metric_name_test.go create mode 100644 lib/storage/part.go create mode 100644 lib/storage/part_header.go create mode 100644 lib/storage/part_header_test.go create mode 100644 lib/storage/part_search.go create mode 100644 lib/storage/part_search_test.go create mode 100644 lib/storage/partition.go create mode 100644 lib/storage/partition_search.go create mode 100644 lib/storage/partition_search_test.go create mode 100644 lib/storage/partition_test.go create mode 100644 lib/storage/raw_block.go create mode 100644 lib/storage/raw_row.go create mode 100644 lib/storage/search.go create mode 100644 lib/storage/search_test.go create mode 100644 lib/storage/storage.go create mode 100644 lib/storage/storage_test.go create mode 100644 lib/storage/storage_timing_test.go create mode 100644 lib/storage/table.go create mode 100644 lib/storage/table_search.go create mode 100644 lib/storage/table_search_test.go create mode 100644 lib/storage/table_search_timing_test.go create mode 100644 lib/storage/table_test.go create mode 100644 lib/storage/table_timing_test.go create mode 100644 lib/storage/tag_filters.go create mode 100644 lib/storage/tag_filters_test.go create mode 100644 lib/storage/tag_filters_timing_test.go create mode 100644 lib/storage/time.go create mode 100644 lib/storage/time_test.go create mode 100644 lib/storage/tsid.go create mode 100644 lib/storage/tsid_test.go create mode 100644 lib/syncwg/syncwg.go create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/.travis.yml create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/LICENSE create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/README.md create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/bigcache.go create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/fastcache.go create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/file.go create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/go.mod create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/go.sum create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/malloc_heap.go create mode 100644 vendor/github.com/VictoriaMetrics/fastcache/malloc_mmap.go create mode 100644 vendor/github.com/VictoriaMetrics/metrics/.travis.yml create mode 100644 vendor/github.com/VictoriaMetrics/metrics/LICENSE create mode 100644 vendor/github.com/VictoriaMetrics/metrics/README.md create mode 100644 vendor/github.com/VictoriaMetrics/metrics/counter.go create mode 100644 vendor/github.com/VictoriaMetrics/metrics/gauge.go create mode 100644 vendor/github.com/VictoriaMetrics/metrics/go.mod create mode 100644 vendor/github.com/VictoriaMetrics/metrics/go.sum create mode 100644 vendor/github.com/VictoriaMetrics/metrics/metrics.go create mode 100644 vendor/github.com/VictoriaMetrics/metrics/summary.go create mode 100644 vendor/github.com/VictoriaMetrics/metrics/validator.go create mode 100644 vendor/github.com/cespare/xxhash/v2/.travis.yml create mode 100644 vendor/github.com/cespare/xxhash/v2/LICENSE.txt create mode 100644 vendor/github.com/cespare/xxhash/v2/README.md create mode 100644 vendor/github.com/cespare/xxhash/v2/go.mod create mode 100644 vendor/github.com/cespare/xxhash/v2/go.sum create mode 100644 vendor/github.com/cespare/xxhash/v2/xxhash.go create mode 100644 vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go create mode 100644 vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s create mode 100644 vendor/github.com/cespare/xxhash/v2/xxhash_other.go create mode 100644 vendor/github.com/cespare/xxhash/v2/xxhash_safe.go create mode 100644 vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go create mode 100644 vendor/github.com/golang/snappy/.gitignore create mode 100644 vendor/github.com/golang/snappy/AUTHORS create mode 100644 vendor/github.com/golang/snappy/CONTRIBUTORS create mode 100644 vendor/github.com/golang/snappy/LICENSE create mode 100644 vendor/github.com/golang/snappy/README create mode 100644 vendor/github.com/golang/snappy/decode.go create mode 100644 vendor/github.com/golang/snappy/decode_amd64.go create mode 100644 vendor/github.com/golang/snappy/decode_amd64.s create mode 100644 vendor/github.com/golang/snappy/decode_other.go create mode 100644 vendor/github.com/golang/snappy/encode.go create mode 100644 vendor/github.com/golang/snappy/encode_amd64.go create mode 100644 vendor/github.com/golang/snappy/encode_amd64.s create mode 100644 vendor/github.com/golang/snappy/encode_other.go create mode 100644 vendor/github.com/golang/snappy/go.mod create mode 100644 vendor/github.com/golang/snappy/snappy.go create mode 100644 vendor/github.com/valyala/bytebufferpool/.travis.yml create mode 100644 vendor/github.com/valyala/bytebufferpool/LICENSE create mode 100644 vendor/github.com/valyala/bytebufferpool/README.md create mode 100644 vendor/github.com/valyala/bytebufferpool/bytebuffer.go create mode 100644 vendor/github.com/valyala/bytebufferpool/doc.go create mode 100644 vendor/github.com/valyala/bytebufferpool/pool.go create mode 100644 vendor/github.com/valyala/fastjson/LICENSE create mode 100644 vendor/github.com/valyala/fastjson/fastfloat/parse.go create mode 100644 vendor/github.com/valyala/fastrand/.travis.yml create mode 100644 vendor/github.com/valyala/fastrand/LICENSE create mode 100644 vendor/github.com/valyala/fastrand/README.md create mode 100644 vendor/github.com/valyala/fastrand/fastrand.go create mode 100644 vendor/github.com/valyala/fastrand/go.mod create mode 100644 vendor/github.com/valyala/gozstd/.gitignore create mode 100644 vendor/github.com/valyala/gozstd/.travis.yml create mode 100644 vendor/github.com/valyala/gozstd/LICENSE create mode 100644 vendor/github.com/valyala/gozstd/Makefile create mode 100644 vendor/github.com/valyala/gozstd/README.md create mode 100644 vendor/github.com/valyala/gozstd/dict.go create mode 100644 vendor/github.com/valyala/gozstd/go.mod create mode 100644 vendor/github.com/valyala/gozstd/gozstd.go create mode 100644 vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.a create mode 100644 vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.go create mode 100644 vendor/github.com/valyala/gozstd/libzstd_linux_amd64.a create mode 100644 vendor/github.com/valyala/gozstd/libzstd_linux_amd64.go create mode 100644 vendor/github.com/valyala/gozstd/libzstd_linux_arm.a create mode 100644 vendor/github.com/valyala/gozstd/libzstd_linux_arm.go create mode 100644 vendor/github.com/valyala/gozstd/libzstd_linux_arm64.a create mode 100644 vendor/github.com/valyala/gozstd/libzstd_linux_arm64.go create mode 100644 vendor/github.com/valyala/gozstd/libzstd_windows_amd64.a create mode 100644 vendor/github.com/valyala/gozstd/libzstd_windows_amd64.go create mode 100644 vendor/github.com/valyala/gozstd/reader.go create mode 100644 vendor/github.com/valyala/gozstd/stream.go create mode 100644 vendor/github.com/valyala/gozstd/writer.go create mode 100644 vendor/github.com/valyala/gozstd/zdict.h create mode 100644 vendor/github.com/valyala/gozstd/zstd.h create mode 100644 vendor/github.com/valyala/gozstd/zstd_errors.h create mode 100644 vendor/github.com/valyala/histogram/LICENSE create mode 100644 vendor/github.com/valyala/histogram/README.md create mode 100644 vendor/github.com/valyala/histogram/go.mod create mode 100644 vendor/github.com/valyala/histogram/go.sum create mode 100644 vendor/github.com/valyala/histogram/histogram.go create mode 100644 vendor/github.com/valyala/quicktemplate/.gitignore create mode 100644 vendor/github.com/valyala/quicktemplate/.travis.yml create mode 100644 vendor/github.com/valyala/quicktemplate/LICENSE create mode 100644 vendor/github.com/valyala/quicktemplate/QuickTemplate.xml create mode 100644 vendor/github.com/valyala/quicktemplate/README.md create mode 100644 vendor/github.com/valyala/quicktemplate/bytebuffer.go create mode 100644 vendor/github.com/valyala/quicktemplate/doc.go create mode 100644 vendor/github.com/valyala/quicktemplate/go.mod create mode 100644 vendor/github.com/valyala/quicktemplate/go.sum create mode 100644 vendor/github.com/valyala/quicktemplate/htmlescapewriter.go create mode 100644 vendor/github.com/valyala/quicktemplate/jsonstring.go create mode 100644 vendor/github.com/valyala/quicktemplate/urlencode.go create mode 100644 vendor/github.com/valyala/quicktemplate/util.go create mode 100644 vendor/github.com/valyala/quicktemplate/util_appengine.go create mode 100644 vendor/github.com/valyala/quicktemplate/util_noappengine.go create mode 100644 vendor/github.com/valyala/quicktemplate/writer.go create mode 100644 vendor/golang.org/x/sys/AUTHORS create mode 100644 vendor/golang.org/x/sys/CONTRIBUTORS create mode 100644 vendor/golang.org/x/sys/LICENSE create mode 100644 vendor/golang.org/x/sys/PATENTS create mode 100644 vendor/golang.org/x/sys/unix/.gitignore create mode 100644 vendor/golang.org/x/sys/unix/README.md create mode 100644 vendor/golang.org/x/sys/unix/affinity_linux.go create mode 100644 vendor/golang.org/x/sys/unix/aliases.go create mode 100644 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mips64x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mipsx.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_s390x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_solaris_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/bluetooth_linux.go create mode 100644 vendor/golang.org/x/sys/unix/cap_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/constants.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_linux.go create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dirent.go create mode 100644 vendor/golang.org/x/sys/unix/endian_big.go create mode 100644 vendor/golang.org/x/sys/unix/endian_little.go create mode 100644 vendor/golang.org/x/sys/unix/env_unix.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go create mode 100644 vendor/golang.org/x/sys/unix/gccgo.go create mode 100644 vendor/golang.org/x/sys/unix/gccgo_c.c create mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ioctl.go create mode 100644 vendor/golang.org/x/sys/unix/mkall.sh create mode 100644 vendor/golang.org/x/sys/unix/mkerrors.sh create mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go create mode 100644 vendor/golang.org/x/sys/unix/pledge_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/race.go create mode 100644 vendor/golang.org/x/sys/unix/race0.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_linux.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_unix.go create mode 100644 vendor/golang.org/x/sys/unix/str.go create mode 100644 vendor/golang.org/x/sys/unix/syscall.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go create mode 100644 vendor/golang.org/x/sys/unix/timestruct.go create mode 100644 vendor/golang.org/x/sys/unix/unveil_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zptrace386_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracearm_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemips_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemipsle_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go create mode 100644 vendor/modules.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..85c355aab --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.git +vendor +gocache-for-docker +victoria-metrics-data +vmstorage-data +vmselect-cache diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..b5246b398 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/tags +/pkg +*.pprof +/bin +.idea +*.test +*.swp +/gocache-for-docker +/victoria-metrics-data +/vmstorage-data +/vmselect-cache diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..40dda06d5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2019 VictoriaMetrics, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..9d258dfa6 --- /dev/null +++ b/Makefile @@ -0,0 +1,64 @@ +PKG_PREFIX := github.com/VictoriaMetrics/VictoriaMetrics + +BUILDINFO_TAG ?= $(shell echo $$(git describe --long --all | tr '/' '-')$$( \ + git diff-index --quiet HEAD -- || echo '-dirty-'$$(git diff-index -u HEAD | sha1sum | grep -oP '^.{8}'))) + +PKG_TAG ?= $(shell git tag -l --points-at HEAD) +ifeq ($(PKG_TAG),) +PKG_TAG := $(BUILDINFO_TAG) +endif + +GO_BUILDINFO = -X '$(PKG_PREFIX)/lib/buildinfo.Version=$(APP_NAME)-$(shell date -u +'%Y%m%d-%H%M%S')-$(BUILDINFO_TAG)' + +all: \ + victoria-metrics-prod + +include app/*/Makefile +include deployment/*/Makefile + +clean: + rm -rf bin/* + +release: victoria-metrics-prod + cd bin && tar czf victoria-metrics-$(PKG_TAG).tar.gz victoria-metrics-prod + +fmt: + go fmt $(PKG_PREFIX)/lib/... + go fmt $(PKG_PREFIX)/app/... + +vet: + go vet $(PKG_PREFIX)/lib/... + go vet $(PKG_PREFIX)/app/... + +lint: install-golint + golint lib/... + golint app/... + +install-golint: + which golint || GO111MODULE=off go get -u github.com/golang/lint/golint + +errcheck: install-errcheck + errcheck -exclude=errcheck_excludes.txt ./lib/... + errcheck -exclude=errcheck_excludes.txt ./app/vminsert/... + errcheck -exclude=errcheck_excludes.txt ./app/vmselect/... + errcheck -exclude=errcheck_excludes.txt ./app/vmstorage/... + +install-errcheck: + which errcheck || GO111MODULE=off go get -u github.com/kisielk/errcheck + +test: + go test $(PKG_PREFIX)/lib/... + +benchmark: + go test -bench=. $(PKG_PREFIX)/lib/... + +vendor-update: + go get -u + go mod tidy + go mod vendor + +quicktemplate-gen: install-qtc + qtc + +install-qtc: + which qtc || GO111MODULE=off go get -u github.com/valyala/quicktemplate/qtc diff --git a/README.md b/README.md index 606db2dd4..33a62a5f6 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,404 @@ Victoria Metrics -## VictoriaMetrics - the best long-term remote storage for Prometheus +## Single-node VictoriaMetrics [![Latest Release](https://img.shields.io/github/release/VictoriaMetrics/VictoriaMetrics.svg?style=flat-square)](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest) -### VictoriaMetrics features +VictoriaMetrics is a long-term remote storage for Prometheus. +It is available in [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases), +[docker images](https://hub.docker.com/r/valyala/victoria-metrics/) and +in [source code](https://github.com/VictoriaMetrics/VictoriaMetrics). -- Native [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/) support. Additionally, VictoriaMetrics extends PromQL with useful features. See [Extended PromQL](https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL) for more details. -- Simple configuration. Just copy-n-paste remote storage URL to Prometheus config and that's it! See [Quick Start](https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/Quick-Start) for more info. -- Reduced operational overhead. Offload operational burden - configuration, capacity planning, scalability, backups, retention, durability - from Prometheus local storage to VictoriaMetrics. -- Insertion rate scales to [millions of metric values per second](https://medium.com/@valyala/insert-benchmarks-with-inch-influxdb-vs-victoriametrics-e31a41ae2893). -- Storage scales to [millions of metrics](https://medium.com/@valyala/high-cardinality-tsdb-benchmarks-victoriametrics-vs-timescaledb-vs-influxdb-13e6ee64dd6b) with trillions of metric values. -- Wide range of retention periods - from 1 month to 5 years. Users may create different projects (aka `storage namespaces`) with different retention periods. -- [Fast query engine](https://medium.com/@valyala/when-size-matters-benchmarking-victoriametrics-vs-timescale-and-influxdb-6035811952d4). It excels on heavy queries over thousands of metrics with millions of metric values. -- The same remote storage URL may be used by multiple Prometheus instances collecting distinct metric sets, so all these metrics may be used in a single query (aka `global querying view`). This works ideally for multiple Prometheus instances located in different subnetworks / datacenters. -- Accepts data in [InfluxDB line protocol](https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_reference/), so [Telegraf](https://www.influxdata.com/time-series-platform/telegraf/) and other influx-compatible agents may send data to VictoriaMetrics. -- [Single-server VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) accepts data in [Graphite plaintext protocol](https://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol) if `-graphiteListenAddr` is set and in [OpenTSDB format](http://opentsdb.net/docs/build/html/api_telnet/put.html) if `-opentsdbListenAddr` is set. -- VictoriaMetrics supports backfilling, i.e. data points from the past may be inserted into the DB. -- Time series data may be exported via `/api/v1/export?match=`. Optional `start` and `end` timestamps may be added for exporting time series in the given time range. -- Time series may be deleted via `/api/v1/admin/tsdb/delete_series?match[]=`. -- [Instant snapshots](https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282) are supported. +Cluster version is available [here](https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster). -### Useful links +## Prominent features -* [Free single-node VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/Single-server-VictoriaMetrics) -* [Site](https://victoriametrics.com/) -* [`WITH` templates playground](https://play.victoriametrics.com/promql/expand-with-exprs) -* [Grafana playground](http://play-grafana.victoriametrics.com:3000/d/4ome8yJmz/node-exporter-on-victoriametrics-demo) -* [Docs](https://github.com/VictoriaMetrics/VictoriaMetrics/wiki) -* [FAQ](https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/FAQ) -* [Issues](https://github.com/VictoriaMetrics/VictoriaMetrics/issues) -* [Google group](https://groups.google.com/forum/#!forum/victoriametrics) -* [Creating the best remote storage for Prometheus](https://medium.com/devopslinks/victoriametrics-creating-the-best-remote-storage-for-prometheus-5d92d66787ac) - an article with technical details about VictoriaMetrics. -* [Official Grafana Dashboard](https://grafana.com/dashboards/10229) +* Supports [Prometheus querying API](https://prometheus.io/docs/prometheus/latest/querying/api/), so it can be used as Prometheus drop-in replacement in Grafana. + Additionally, VictoriaMetrics extends PromQL with opt-in [useful features](https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/ExtendedPromQL). +* High performance and good scalability for both [inserts](https://medium.com/@valyala/high-cardinality-tsdb-benchmarks-victoriametrics-vs-timescaledb-vs-influxdb-13e6ee64dd6b) + and [selects](https://medium.com/@valyala/when-size-matters-benchmarking-victoriametrics-vs-timescale-and-influxdb-6035811952d4). + [Outperforms InfluxDB and TimescaleDB by up to 20x](https://medium.com/@valyala/measuring-vertical-scalability-for-time-series-databases-in-google-cloud-92550d78d8ae). +* [Uses 10x less RAM than InfluxDB](https://medium.com/@valyala/insert-benchmarks-with-inch-influxdb-vs-victoriametrics-e31a41ae2893) when working with millions of unique time series (aka high cardinality). +* High data compression, so [up to 70x more data points](https://medium.com/@valyala/when-size-matters-benchmarking-victoriametrics-vs-timescale-and-influxdb-6035811952d4) + may be crammed into a limited storage comparing to TimescaleDB. +* Optimized for storage with high-latency IO and low iops (HDD and network storage in AWS, Google Cloud, Microsoft Azure, etc). See [graphs from these benchmarks](https://medium.com/@valyala/high-cardinality-tsdb-benchmarks-victoriametrics-vs-timescaledb-vs-influxdb-13e6ee64dd6b). +* A single-node VictoriaMetrics may substitute moderately sized clusters built with competing solutions such as Thanos, Uber M3, Cortex, InfluxDB or TimescaleDB. + See [vertical scalability benchmarks](https://medium.com/@valyala/measuring-vertical-scalability-for-time-series-databases-in-google-cloud-92550d78d8ae). +* Easy operation: + * VictoriaMetrics consists of a single executable without external dependencies. + * All the configuration is done via explicit command-line flags with reasonable defaults. + * All the data is stored in a single directory pointed by `-storageDataPath` flag. + * Easy backups from [instant snapshots](https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282). +* Storage is protected from corruption on unclean shutdown (i.e. hardware reset or `kill -9`) thanks to [the storage architecture](https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282). +* Supports metrics' ingestion and backfilling via the following protocols: + * [Prometheus remote write API](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write) + * [InfluxDB line protocol](https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_tutorial/) + * [Graphite plaintext protocol](https://graphite.readthedocs.io/en/latest/feeding-carbon.html) with [tags](https://graphite.readthedocs.io/en/latest/tags.html#carbon) + if `-graphiteListenAddr` is set. + * [OpenTSDB put message](http://opentsdb.net/docs/build/html/api_telnet/put.html) if `-opentsdbListenAddr` is set. +* Ideally works with big amounts of time series data from IoT sensors, connected car sensors and industrial sensors. +* Has open source [cluster version](https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster). -### Victoria Metrics Logo +## Operation + + +### Table of contents + +* [How to build from sources](#how-to-build-from-sources) +* [How to start VictoriaMetrics](#how-to-start-victoriametrics) +* [Prometheus setup](#prometheus-setup) +* [Grafana setup](#grafana-setup) +* [How to send data from InfluxDB-compatible agents such as Telegraf](#how-to-send-data-from-influxdb-compatible-agents-such-as-telegraf) +* [How to send data from Graphite-compatible agents such as StatsD](#how-to-send-data-from-graphite-compatible-agents-such-as-statsd) +* [How to send data from OpenTSDB-compatible agents](#how-to-send-data-from-opentsdb-compatible-agents) +* [How to apply new config / ugrade VictoriaMetrics](#how-to-apply-new-config--upgrade-victoriametrics) +* [How to work with snapshots](#how-to-work-with-snapshots) +* [How to delete time series](#how-to-delete-time-series) +* [How to export time series](#how-to-export-time-series) +* [Federation](#federation) +* [Capacity planning](#capacity-planning) +* [High Availability](#high-availability) +* [Multiple retentions](#multiple-retentions) +* [Scalability and cluster version](#scalability-and-cluster-version) +* [Security](#security) +* [Tuning](#tuning) +* [Monitoring](#monitoring) +* [Troubleshooting](#troubleshooting) +* [Community and contributions](#community-and-contributions) +* [Reporting bugs](#reporting-bugs) + + +### How to build from sources + +We recommend using either [binary releases](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) or +[docker images](https://hub.docker.com/r/valyala/victoria-metrics/) instead of building VictoriaMetrics +from sources. Building from sources is reasonable when developing an additional features specific +to your needs. + + +#### Development build + +1. [Install Go](https://golang.org/doc/install). The minimum supported version is Go 1.12. +2. Run `go build ./app/victoria-metrics` from the root folder of the repository. + It will build `victoria-metrics` binary in the root folder of the repository. + +#### Production build + +1. [Install docker](https://docs.docker.com/install/). +2. Run `make victoria-metrics-prod` from the root folder of the respository. + It will build `victoria-metrics-prod` binary and put it into the `bin` folder. + +#### Building docker images + +Run `make package-victoria-metrics`. It will build `valyala/victoria-metrics:` docker image locally. +`` is auto-generated image tag, which depends on source code in the repository. +The `` may be manually set via `PKG_TAG=foobar make package`. + + + +### How to start VictoriaMetrics + +Just start VictoriaMetrics executable or docker image with the desired command-line flags. + +The following command line flags are used the most: + +* `-storageDataPath` - path to data directory. VictoriaMetrics stores all the data in this directory. +* `-retentionPeriod` - retention period in months for the data. Older data is automatically deleted. +* `-httpListenAddr` - TCP address to listen to for http requests. By default it listens port `8428` on all the network interfaces. +* `-graphiteListenAddr` - TCP and UDP address to listen to for Graphite data. By default it is disabled. +* `-opentsdbListenAddr` - TCP and UDP address to listen to for OpenTSDB data. By default it is disabled. + +Pass `-help` to see all the available flags with description and default values. + + +### Prometheus setup + +Add the following lines to Prometheus config file (it is usually located at `/etc/prometheus/prometheus.yml`): + +```yml +remote_write: + - url: http://:8428/api/v1/write + queue_config: + max_samples_per_send: 10000 +``` + +Substitute `` with the hostname or IP address of VictoriaMetrics. +Then apply the new config via the following command: + +``` +kill -HUP `pidof prometheus` +``` + +Prometheus writes incoming data to local storage and to remote storage in parallel. +This means the data remains available in local storage for `--storage.tsdb.retention.time` duration +if remote storage stops working. + +If you plan sending data to VictoriaMetrics from multiple Prometheus instances, then add the following lines into `global` section +of [Prometheus config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#configuration-file): + +```yml +global: + external_labels: + datacenter: dc-123 +``` + +This instructs Prometheus to add `datacenter=dc-123` label to each time series sent to remote storage. +The label name may be arbitrary - `datacenter` is just an example. The label value must be unique +across Prometheus instances, so time series may be filtered and grouped by this label. + + +### Grafana setup + +Create [Prometheus datasource](http://docs.grafana.org/features/datasources/prometheus/) in Grafana with the following Url: + +``` +http://:8428 +``` + +Substitute `` with the hostname or IP address of VictoriaMetrics. + +Then build graphs with the created datasource using [Prometheus query language](https://prometheus.io/docs/prometheus/latest/querying/basics/). +VictoriaMetrics supports native PromQL and [extends it with useful features](ExtendedPromQL). + + +### How to send data from InfluxDB-compatible agents such as [Telegraf](https://www.influxdata.com/time-series-platform/telegraf/)? + +Just use `http://:8428` url instead of InfluxDB url in agents' configs. +For instance, put the following lines into `Telegraf` config, so it sends data to VictoriaMetrics instead of InfluxDB: + +``` +[[outputs.influxdb]] + urls = ["http://:8428"] +``` + +Do not forget substituting `` with the real address where VictoriaMetrics runs. + +VictoriaMetrics maps Influx data using the following rules: +* [`db` query arg](https://docs.influxdata.com/influxdb/v1.7/tools/api/#write-http-endpoint) is mapped into `db` label value +* Field names are mapped to time series names prefixed by `{measurement}.` value +* Field values are mapped to time series values +* Tags are mapped to Prometheus labels as-is + + +### How to send data from Graphite-compatible agents such as [StatsD](https://github.com/etsy/statsd)? + +1) Enable Graphite receiver in VictoriaMetrics by setting `-graphiteListenAddr` command line flag. For instance, +the following command will enable Graphite receiver in VictoriaMetrics on TCP and UDP port `2003`: + +``` +/path/to/victoria-metrics-prod ... -graphiteListenAddr=:2003 +``` + +2) Use the configured address in Graphite-compatible agents. For instance, set `graphiteHost` +to the VictoriaMetrics host in `StatsD` configs. + + +### How to send data from OpenTSDB-compatible agents? + +1) Enable OpenTSDB receiver in VictoriaMetrics by setting `-opentsdbListenAddr` command line flag. For instance, +the following command will enable OpenTSDB receiver in VictoriaMetrics on TCP and UDP port `4242`: + +``` +/path/to/victoria-metrics-prod ... -opentsdbListenAddr=:4242 +``` + +2) Send data to the given address from OpenTSDB-compatible agents. + + +### How to apply new config / upgrade VictoriaMetrics? + +VictoriaMetrics must be restarted in order to upgrade or apply new config: + +1) Send `SIGINT` signal to VictoriaMetrics process in order to gracefully stop it. +2) Wait until the process stops. This can take a few seconds. +3) Start the upgraded VictoriaMetrics with new config. + + +### How to work with snapshots? + +Navigate to `http://:8428/snapshot/create` in order to create an instant snapshot. +The page will return the following JSON response: + +``` +{"status":"ok","snapshot":""} +``` + +Snapshots are created under `<-storageDataPath>/snapshots` directory, where `<-storageDataPath>` +is the command-line flag value. Snapshots can be archived to backup storage via `rsync -L`, `scp -r` +or any similar tool that follows symlinks during copying. + +The `http://:8428/snapshot/list` page contains the list of available snapshots. + +Navigate to `http://:8428/snapshot/delete?snapshot=` in order +to delete `` snapshot. + +Navigate to `http://:8428/snapshot/delete_all` in order to delete all the snapshots. + + +### How to delete time series? + +Send a request to `http://:8428/api/v1/admin/tsdb/delete_series?match[]=`, +where `` may contain any [time series selector](https://prometheus.io/docs/prometheus/latest/querying/basics/#time-series-selectors) +for metrics to delete. After that all the time series matching the given selector are deleted. Storage space for +the deleted time series isn't freed instantly - it is freed during subsequent merges of data files. + + +### How to export time series? + +Send a request to `http://:8428/api/v1/export?match[]=`, +where `` may contain any [time series selector](https://prometheus.io/docs/prometheus/latest/querying/basics/#time-series-selectors) +for metrics to export. The response would contain all the data for the selected time series in [JSON streaming format](https://en.wikipedia.org/wiki/JSON_streaming#Line-delimited_JSON). +Each JSON line would contain data for a single time series. An example output: + +``` +{"metric":{"__name__":"up","job":"node_exporter","instance":"localhost:9100"},"values":[0,0,0],"timestamps":[1549891472010,1549891487724,1549891503438]} +{"metric":{"__name__":"up","job":"prometheus","instance":"localhost:9090"},"values":[1,1,1],"timestamps":[1549891461511,1549891476511,1549891491511]} +``` + +Optional `start` and `end` args may be added to the request in order to limit the time frame for the exported data. These args may contain either +unix timestamp in seconds or [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) values. + + +### Federation + +VictoriaMetrics exports [Prometheus-compatible federation data](https://prometheus.io/docs/prometheus/latest/federation/) +at `http://:8428/federate?match[]=`. + +Optional `start` and `end` args may be added to the request in order to scrape the last point for each selected time series on the `[start ... end]` interval. +`start` and `end` may contain either unix timestamp in seconds or [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) values. By default the last point +on the interval `[now - max_lookback ... now]` is scraped for each time series. Default value for `max_lookback` is `5m` (5 minutes), but can be overriden. +For instance, `/federate?match[]=up&max_lookback=1h` would return last points on the `[now - 1h ... now]` interval. This may be useful for time series federation +with scrape intervals exceeding `5m`. + + +### Capacity planning + +Rough estimation of the required resources: + +* RAM size: less than 1KB per active time series. So, ~1GB of RAM is required for 1M active time series. + Time series is considered active if new data points have been added to it recently or if it has been recently queried. + VictoriaMetrics stores various caches in RAM. Memory size for these caches may be limited with `-memory.allowedPercent` flag. +* CPU cores: a CPU core per 300K inserted data points per second. So, ~4 CPU cores are required for processing + the insert stream of 1M data points per second. + If you see lower numbers per CPU core, then it is likely active time series info doesn't fit caches, + so you need more RAM for lowering CPU usage. +* Storage size: less than a byte per data point on average. So, ~260GB is required for storing a month-long insert stream + of 100K data points per second. + The actual storage size heavily depends on data randomness (entropy). Higher randomness means higher storage size requirements. + + +### High availability + +1) Install multiple VictoriaMetrics instances in distinct datacenters. +2) Add addresses of these instances to `remote_write` section in Prometheus config: + +```yml +remote_write: + - url: http://:8428/api/v1/write + queue_config: + max_samples_per_send: 10000 + # ... + - url: http://:8428/api/v1/write + queue_config: + max_samples_per_send: 10000 +``` + +3) Apply the updated config: + +``` +kill -HUP `pidof prometheus` +``` + +4) Now Prometheus should write data into all the configured `remote_write` urls in parallel. +5) Set up [Promxy](https://github.com/jacksontj/promxy) in front of all the VictoriaMetrics replicas. +6) Set up Prometheus datasource in Grafana that points to Promxy. + + +### Multiple retentions + +Just start multiple VictoriaMetrics instances with distinct values for the following flags: + +* `-retentionPeriod` +* `-storageDataPath`, so the data for each retention period is saved in a separate directory +* `-httpListenAddr`, so clients may reach VictoriaMetrics instance with proper retention + + +### Scalability and cluster version + +Though single-node VictoriaMetrics cannot scale to multiple nodes, it is optimized for resource usage - storage size / bandwidth / IOPS, RAM, CPU. +This means that a single-node VictoriaMetrics may scale vertically and substitute moderately sized cluster built with competing solutions +such as Thanos, Uber M3, InfluxDB or TimescaleDB. + +So try single-node VictoriaMetrics at first and then [switch to cluster version](https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster) if you still need +horizontally scalable long-term remote storage for really large Prometheus deployments. +[Contact us](mailto:info@victoriametrics.com) for paid support. + + +### Security + +Do not forget protecting sensitive endpoints in VictoriaMetrics when exposing it to untrusted networks such as internet. +Consider setting the following command-line flags: + +* `-tls`, `-tlsCertFile` and `-tlsKeyFile` for switching from HTTP to HTTPS. +* `-httpAuth.username` and `-httpAuth.password` for protecting all the HTTP endpoints + with [HTTP Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). +* `-deleteAuthKey` for protecting `/api/v1/admin/tsdb/delete_series` endpoint. See [how to delete time series](#how-to-delete-time-series). +* `-snapshotAuthKey` for protecting `/snapshot*` endpoints. See [how to work with snapshots](#how-to-work-with-snapshots). + +Explicitly set internal network interface for TCP and UDP ports for data ingestion with Graphite and OpenTSDB formats. +For example, substitute `-graphiteListenAddr=:2003` with `-graphiteListenAddr=:2003`. + + +### Tuning + +* There is no need in VictoriaMetrics tuning, since it uses reasonable defaults for command-line flags, + which are automatically adjusted for the available CPU and RAM resources. +* There is no need in Operating System tuning, since VictoriaMetrics is optimized for default OS settings. + The only option is increasing the limit on [the number open files in the OS](https://medium.com/@muhammadtriwibowo/set-permanently-ulimit-n-open-files-in-ubuntu-4d61064429a), + so Prometheus instances could establish more connections to VictoriaMetrics. + + +### Monitoring + +VictoriaMetrics exports internal metrics in Prometheus format on the `/metrics` page. +Add this page to Prometheus' scrape config in order to collect VictoriaMetrics metrics. +There is [an official Grafana dashboard for single-node VictoriaMetrics](https://grafana.com/dashboards/10229). + + +### Troubleshooting + +* If VictoriaMetrics works slowly and eats more than a CPU core per 100K ingested data points per second, + then it is likely you have too many active time series for the current amount of RAM. + It is recommended increasing the amount of RAM on the node with VictoriaMetrics in order to improve + ingestion performance. + Another option is to increase `-memory.allowedPercent` command-line flag value. Be careful with this + option, since too big value for `-memory.allowedPercent` may result in high I/O usage. + + +## Community and contributions + +Feel free asking any questions regarding VictoriaMetrics [here](https://groups.google.com/forum/#!forum/victorametrics-users). + +We are open to third-party pull requests provided they follow [KISS design principle](https://en.wikipedia.org/wiki/KISS_principle): + +- Prefer simple code and architecture. +- Avoid complex abstractions. +- Avoid magic code and fancy algorithms. +- Avoid [big external dependencies](https://medium.com/@valyala/stripping-dependency-bloat-in-victoriametrics-docker-image-983fb5912b0d). +- Minimize the number of moving parts in the distributed system. +- Avoid automated decisions, which may hurt cluster availability, consistency or performance. + +Adhering `KISS` principle simplifies the resulting code and architecture, so it can be reviewed, understood and verified by many people. + + +## Reporting bugs + +Report bugs and propose new features [here](https://github.com/VictoriaMetrics/VictoriaMetrics/issues). + + +## Victoria Metrics Logo [Zip](VM_logo.zip) contains three folders with different image orientation (main color and inverted version). @@ -47,24 +409,21 @@ Files included in each folder: * 2 EPS Adobe Illustrator EPS10 files -#### Logo Usage Guidelines +### Logo Usage Guidelines -##### Font used: +#### Font used: -* Lato Black +* Lato Black * Lato Regular -##### Color Palette: +#### Color Palette: -* HEX [#110f0f](https://www.color-hex.com/color/110f0f) +* HEX [#110f0f](https://www.color-hex.com/color/110f0f) * HEX [#ffffff](https://www.color-hex.com/color/ffffff) -#### We kindly ask: +### We kindly ask: - Please don't use any other font instead of suggested. - There should be sufficient clear space around the logo. - Do not change spacing, alignment, or relative locations of the design elements. - Do not change the proportions of any of the design elements or the design itself. You may resize as needed but must retain all proportions. - - - diff --git a/app/victoria-metrics/Makefile b/app/victoria-metrics/Makefile new file mode 100644 index 000000000..6077a7d83 --- /dev/null +++ b/app/victoria-metrics/Makefile @@ -0,0 +1,21 @@ +# All these commands must run from repository root. + +victoria-metrics-prod: + APP_NAME=victoria-metrics $(MAKE) app-via-docker + +package-victoria-metrics: + APP_NAME=victoria-metrics \ + $(MAKE) package-via-docker + +publish-victoria-metrics: + APP_NAME=victoria-metrics $(MAKE) publish-via-docker + +run-victoria-metrics: + mkdir -p victoria-metrics-data + DOCKER_OPTS='-v $(shell pwd)/victoria-metrics-data:/victoria-metrics-data -p 8428:8428 -p 2003:2003 -p 2003:2003/udp' \ + APP_NAME=victoria-metrics \ + ARGS='-graphiteListenAddr=:2003 -opentsdbListenAddr=:4242 -retentionPeriod=12 -search.maxUniqueTimeseries=1000000 -search.maxQueryDuration=10m' \ + $(MAKE) run-via-docker + +victoria-metrics-arm: + CC=arm-linux-gnueabi-gcc CGO_ENABLED=1 GOARCH=arm GO111MODULE=on go build -mod=vendor -ldflags "$(GO_BUILDINFO)" -o bin/victoria-metrics-arm ./app/victoria-metrics diff --git a/app/victoria-metrics/deployment/Dockerfile b/app/victoria-metrics/deployment/Dockerfile new file mode 100644 index 000000000..f47a803a6 --- /dev/null +++ b/app/victoria-metrics/deployment/Dockerfile @@ -0,0 +1,5 @@ +FROM scratch +COPY --from=local/certs:1.0.2 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY bin/victoria-metrics-prod . +EXPOSE 8428 +ENTRYPOINT ["/victoria-metrics-prod"] diff --git a/app/victoria-metrics/main.go b/app/victoria-metrics/main.go new file mode 100644 index 000000000..0dead5cc0 --- /dev/null +++ b/app/victoria-metrics/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "flag" + "net/http" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/procutil" +) + +var httpListenAddr = flag.String("httpListenAddr", ":8428", "TCP address to listen for http connections") + +func main() { + flag.Parse() + buildinfo.Init() + logger.Init() + logger.Infof("starting VictoraMetrics at %q...", *httpListenAddr) + startTime := time.Now() + vmstorage.Init() + vmselect.Init() + vminsert.Init() + + go httpserver.Serve(*httpListenAddr, requestHandler) + logger.Infof("started VictoriaMetrics in %s", time.Since(startTime)) + + sig := procutil.WaitForSigterm() + logger.Infof("received signal %s", sig) + + logger.Infof("gracefully shutting down webservice at %q", *httpListenAddr) + startTime = time.Now() + if err := httpserver.Stop(*httpListenAddr); err != nil { + logger.Fatalf("cannot stop the webservice: %s", err) + } + vminsert.Stop() + logger.Infof("successfully shut down the webservice in %s", time.Since(startTime)) + + vmstorage.Stop() + vmselect.Stop() + + logger.Infof("the VictoriaMetrics has been stopped in %s", time.Since(startTime)) +} + +func requestHandler(w http.ResponseWriter, r *http.Request) bool { + if vminsert.RequestHandler(w, r) { + return true + } + if vmselect.RequestHandler(w, r) { + return true + } + if vmstorage.RequestHandler(w, r) { + return true + } + return false +} diff --git a/app/vminsert/README.md b/app/vminsert/README.md new file mode 100644 index 000000000..050290fa6 --- /dev/null +++ b/app/vminsert/README.md @@ -0,0 +1 @@ +`vminsert` routes the ingested data to `vmstorage`. diff --git a/app/vminsert/common/insert_ctx.go b/app/vminsert/common/insert_ctx.go new file mode 100644 index 000000000..65fff3ec1 --- /dev/null +++ b/app/vminsert/common/insert_ctx.go @@ -0,0 +1,106 @@ +package common + +import ( + "fmt" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompb" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +// InsertCtx contains common bits for data points insertion. +type InsertCtx struct { + Labels []prompb.Label + + mrs []storage.MetricRow + metricNamesBuf []byte +} + +// Reset resets ctx for future fill with rowsLen rows. +func (ctx *InsertCtx) Reset(rowsLen int) { + for _, label := range ctx.Labels { + label.Name = nil + label.Value = nil + } + ctx.Labels = ctx.Labels[:0] + + for i := range ctx.mrs { + mr := &ctx.mrs[i] + mr.MetricNameRaw = nil + } + ctx.mrs = ctx.mrs[:0] + + if n := rowsLen - cap(ctx.mrs); n > 0 { + ctx.mrs = append(ctx.mrs[:cap(ctx.mrs)], make([]storage.MetricRow, n)...) + } + ctx.mrs = ctx.mrs[:rowsLen] + ctx.metricNamesBuf = ctx.metricNamesBuf[:0] +} + +func (ctx *InsertCtx) marshalMetricNameRaw(prefix []byte, labels []prompb.Label) []byte { + start := len(ctx.metricNamesBuf) + ctx.metricNamesBuf = append(ctx.metricNamesBuf, prefix...) + ctx.metricNamesBuf = storage.MarshalMetricNameRaw(ctx.metricNamesBuf, labels) + metricNameRaw := ctx.metricNamesBuf[start:] + return metricNameRaw[:len(metricNameRaw):len(metricNameRaw)] +} + +// WriteDataPoint writes (timestamp, value) with the given prefix and lables into ctx buffer. +func (ctx *InsertCtx) WriteDataPoint(prefix []byte, labels []prompb.Label, timestamp int64, value float64) { + metricNameRaw := ctx.marshalMetricNameRaw(prefix, labels) + ctx.addRow(metricNameRaw, timestamp, value) +} + +// WriteDataPointExt writes (timestamp, value) with the given metricNameRaw and labels into ctx buffer. +// +// It returns metricNameRaw for the given labels if len(metricNameRaw) == 0. +func (ctx *InsertCtx) WriteDataPointExt(metricNameRaw []byte, labels []prompb.Label, timestamp int64, value float64) []byte { + if len(metricNameRaw) == 0 { + metricNameRaw = ctx.marshalMetricNameRaw(nil, labels) + } + ctx.addRow(metricNameRaw, timestamp, value) + return metricNameRaw +} + +func (ctx *InsertCtx) addRow(metricNameRaw []byte, timestamp int64, value float64) { + mrs := ctx.mrs + if cap(mrs) > len(mrs) { + mrs = mrs[:len(mrs)+1] + } else { + mrs = append(mrs, storage.MetricRow{}) + } + mr := &mrs[len(mrs)-1] + ctx.mrs = mrs + mr.MetricNameRaw = metricNameRaw + mr.Timestamp = timestamp + mr.Value = value +} + +// AddLabel adds (name, value) label to ctx.Labels. +// +// name and value must exist until ctx.Labels is used. +func (ctx *InsertCtx) AddLabel(name, value string) { + labels := ctx.Labels + if cap(labels) > len(labels) { + labels = labels[:len(labels)+1] + } else { + labels = append(labels, prompb.Label{}) + } + label := &labels[len(labels)-1] + + // Do not copy name and value contents for performance reasons. + // This reduces GC overhead on the number of objects and allocations. + label.Name = bytesutil.ToUnsafeBytes(name) + label.Value = bytesutil.ToUnsafeBytes(value) + + ctx.Labels = labels +} + +// FlushBufs flushes buffered rows to the underlying storage. +func (ctx *InsertCtx) FlushBufs() error { + if err := vmstorage.AddRows(ctx.mrs); err != nil { + return fmt.Errorf("cannot store metrics: %s", err) + } + return nil +} diff --git a/app/vminsert/concurrencylimiter/concurrencylimiter.go b/app/vminsert/concurrencylimiter/concurrencylimiter.go new file mode 100644 index 000000000..f65b32a6e --- /dev/null +++ b/app/vminsert/concurrencylimiter/concurrencylimiter.go @@ -0,0 +1,34 @@ +package concurrencylimiter + +import ( + "fmt" + "runtime" + "time" +) + +var ( + // ch is the channel for limiting concurrent inserts. + // Put an item into it before performing an insert and remove + // the item after the insert is complete. + ch = make(chan struct{}, runtime.GOMAXPROCS(-1)*2) + + // waitDuration is the amount of time to wait until at least a single + // concurrent insert out of cap(Ch) inserts is complete. + waitDuration = time.Second * 30 +) + +// Do calls f with the limited concurrency. +func Do(f func() error) error { + // Limit the number of conurrent inserts in order to prevent from excess + // memory usage and CPU trashing. + t := time.NewTimer(waitDuration) + select { + case ch <- struct{}{}: + t.Stop() + err := f() + <-ch + return err + case <-t.C: + return fmt.Errorf("the server is overloaded with %d concurrent inserts; either increase the number of CPUs or reduce the load", cap(ch)) + } +} diff --git a/app/vminsert/graphite/parser.go b/app/vminsert/graphite/parser.go new file mode 100644 index 000000000..d32f63bd1 --- /dev/null +++ b/app/vminsert/graphite/parser.go @@ -0,0 +1,176 @@ +package graphite + +import ( + "fmt" + "strings" + + "github.com/valyala/fastjson/fastfloat" +) + +// Rows contains parsed graphite rows. +type Rows struct { + Rows []Row + + tagsPool []Tag +} + +// Reset resets rs. +func (rs *Rows) Reset() { + // Reset items, so they can be GC'ed + + for i := range rs.Rows { + rs.Rows[i].reset() + } + rs.Rows = rs.Rows[:0] + + for i := range rs.tagsPool { + rs.tagsPool[i].reset() + } + rs.tagsPool = rs.tagsPool[:0] +} + +// Unmarshal unmarshals grahite plaintext protocol rows from s. +// +// See https://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol +// +// s must be unchanged until rs is in use. +func (rs *Rows) Unmarshal(s string) error { + var err error + rs.Rows, rs.tagsPool, err = unmarshalRows(rs.Rows[:0], s, rs.tagsPool[:0]) + if err != nil { + return err + } + return err +} + +// Row is a single graphite row. +type Row struct { + Metric string + Tags []Tag + Value float64 + Timestamp int64 +} + +func (r *Row) reset() { + r.Metric = "" + r.Tags = nil + r.Value = 0 + r.Timestamp = 0 +} + +func (r *Row) unmarshal(s string, tagsPool []Tag) ([]Tag, error) { + r.reset() + n := strings.IndexByte(s, ' ') + if n < 0 { + return tagsPool, fmt.Errorf("cannot find whitespace between metric and value in %q", s) + } + metricAndTags := s[:n] + tail := s[n+1:] + + n = strings.IndexByte(metricAndTags, ';') + if n < 0 { + // No tags + r.Metric = metricAndTags + } else { + // Tags found + r.Metric = metricAndTags[:n] + tagsStart := len(tagsPool) + var err error + tagsPool, err = unmarshalTags(tagsPool, metricAndTags[n+1:]) + if err != nil { + return tagsPool, fmt.Errorf("cannot umarshal tags: %s", err) + } + tags := tagsPool[tagsStart:] + r.Tags = tags[:len(tags):len(tags)] + } + + n = strings.IndexByte(tail, ' ') + if n < 0 { + return tagsPool, fmt.Errorf("cannot find whitespace between value and timestamp in %q", s) + } + r.Value = fastfloat.ParseBestEffort(tail[:n]) + r.Timestamp = fastfloat.ParseInt64BestEffort(tail[n+1:]) + return tagsPool, nil +} + +func unmarshalRows(dst []Row, s string, tagsPool []Tag) ([]Row, []Tag, error) { + for len(s) > 0 { + n := strings.IndexByte(s, '\n') + if n == 0 { + // Skip empty line + s = s[1:] + continue + } + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Row{}) + } + r := &dst[len(dst)-1] + if n < 0 { + // The last line. + var err error + tagsPool, err = r.unmarshal(s, tagsPool) + if err != nil { + return dst, tagsPool, err + } + return dst, tagsPool, nil + } + var err error + tagsPool, err = r.unmarshal(s[:n], tagsPool) + if err != nil { + return dst, tagsPool, err + } + s = s[n+1:] + } + return dst, tagsPool, nil +} + +func unmarshalTags(dst []Tag, s string) ([]Tag, error) { + for { + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Tag{}) + } + tag := &dst[len(dst)-1] + + n := strings.IndexByte(s, ';') + if n < 0 { + // The last tag found + if err := tag.unmarshal(s); err != nil { + return dst[:len(dst)-1], err + } + return dst, nil + } + if err := tag.unmarshal(s[:n]); err != nil { + return dst[:len(dst)-1], err + } + s = s[n+1:] + } +} + +// Tag is a graphite tag. +type Tag struct { + Key string + Value string +} + +func (t *Tag) reset() { + t.Key = "" + t.Value = "" +} + +func (t *Tag) unmarshal(s string) error { + t.reset() + n := strings.IndexByte(s, '=') + if n < 0 { + return fmt.Errorf("missing tag value for %q", s) + } + t.Key = s[:n] + if len(t.Key) == 0 { + return fmt.Errorf("tag key cannot be empty for %q", s) + } + t.Value = s[n+1:] + return nil +} diff --git a/app/vminsert/graphite/parser_test.go b/app/vminsert/graphite/parser_test.go new file mode 100644 index 000000000..ac021e49b --- /dev/null +++ b/app/vminsert/graphite/parser_test.go @@ -0,0 +1,133 @@ +package graphite + +import ( + "reflect" + "testing" +) + +func TestRowsUnmarshalFailure(t *testing.T) { + f := func(s string) { + t.Helper() + var rows Rows + if err := rows.Unmarshal(s); err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + + // Try again + if err := rows.Unmarshal(s); err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + } + + // Missing value + f("aaa") + + // Missing timestamp + f("aaa 1123") + + // Invalid multiline + f("aaa\nbbb 123 34") + + // missing tag + f("aa; 12 34") + + // missing tag value + f("aa;bb 23 34") + f("aa;=dsd 234 45") +} + +func TestRowsUnmarshalSuccess(t *testing.T) { + f := func(s string, rowsExpected *Rows) { + t.Helper() + var rows Rows + if err := rows.Unmarshal(s); err != nil { + t.Fatalf("cannot unmarshal %q: %s", s, err) + } + if !reflect.DeepEqual(rows.Rows, rowsExpected.Rows) { + t.Fatalf("unexpected rows;\ngot\n%+v;\nwant\n%+v", rows.Rows, rowsExpected.Rows) + } + + // Try unmarshaling again + if err := rows.Unmarshal(s); err != nil { + t.Fatalf("cannot unmarshal %q: %s", s, err) + } + if !reflect.DeepEqual(rows.Rows, rowsExpected.Rows) { + t.Fatalf("unexpected rows;\ngot\n%+v;\nwant\n%+v", rows.Rows, rowsExpected.Rows) + } + + rows.Reset() + if len(rows.Rows) != 0 { + t.Fatalf("non-empty rows after reset: %+v", rows.Rows) + } + } + + // Empty line + f("", &Rows{}) + f("\n\n", &Rows{}) + + // Single line + f("foobar -123.456 789", &Rows{ + Rows: []Row{{ + Metric: "foobar", + Value: -123.456, + Timestamp: 789, + }}, + }) + f("foo.bar 123.456 789\n", &Rows{ + Rows: []Row{{ + Metric: "foo.bar", + Value: 123.456, + Timestamp: 789, + }}, + }) + + // Tags + f("foo;bar=baz 1 2", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{{ + Key: "bar", + Value: "baz", + }}, + Value: 1, + Timestamp: 2, + }}, + }) + f("foo;bar=baz;aa=;x=y 1 2", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{ + { + Key: "bar", + Value: "baz", + }, + { + Key: "aa", + Value: "", + }, + { + Key: "x", + Value: "y", + }, + }, + Value: 1, + Timestamp: 2, + }}, + }) + + // Multi lines + f("foo 0.3 2\nbar.baz 0.34 43\n", &Rows{ + Rows: []Row{ + { + Metric: "foo", + Value: 0.3, + Timestamp: 2, + }, + { + Metric: "bar.baz", + Value: 0.34, + Timestamp: 43, + }, + }, + }) +} diff --git a/app/vminsert/graphite/parser_timing_test.go b/app/vminsert/graphite/parser_timing_test.go new file mode 100644 index 000000000..3c64243aa --- /dev/null +++ b/app/vminsert/graphite/parser_timing_test.go @@ -0,0 +1,24 @@ +package graphite + +import ( + "fmt" + "testing" +) + +func BenchmarkRowsUnmarshal(b *testing.B) { + s := `cpu.usage_user 1.23 1234556768 +cpu.usage_system 23.344 1234556768 +cpu.usage_iowait 3.3443 1234556769 +cpu.usage_irq 0.34432 1234556768 +` + b.SetBytes(int64(len(s))) + b.ReportAllocs() + b.RunParallel(func(pb *testing.PB) { + var rows Rows + for pb.Next() { + if err := rows.Unmarshal(s); err != nil { + panic(fmt.Errorf("cannot unmarshal %q: %s", s, err)) + } + } + }) +} diff --git a/app/vminsert/graphite/request_handler.go b/app/vminsert/graphite/request_handler.go new file mode 100644 index 000000000..7c59d7cb2 --- /dev/null +++ b/app/vminsert/graphite/request_handler.go @@ -0,0 +1,166 @@ +package graphite + +import ( + "bytes" + "fmt" + "io" + "net" + "runtime" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/common" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/concurrencylimiter" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/metrics" +) + +var rowsInserted = metrics.NewCounter(`vm_rows_inserted_total{type="graphite"}`) + +// insertHandler processes remote write for graphite plaintext protocol. +// +// See https://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol +func insertHandler(r io.Reader) error { + return concurrencylimiter.Do(func() error { + return insertHandlerInternal(r) + }) +} + +func insertHandlerInternal(r io.Reader) error { + ctx := getPushCtx() + defer putPushCtx(ctx) + for ctx.Read(r) { + if err := ctx.InsertRows(); err != nil { + return err + } + } + return ctx.Error() +} + +func (ctx *pushCtx) InsertRows() error { + rows := ctx.Rows.Rows + ic := &ctx.Common + ic.Reset(len(rows)) + for i := range rows { + r := &rows[i] + ic.Labels = ic.Labels[:0] + ic.AddLabel("", r.Metric) + for j := range r.Tags { + tag := &r.Tags[j] + ic.AddLabel(tag.Key, tag.Value) + } + ic.WriteDataPoint(nil, ic.Labels, r.Timestamp, r.Value) + } + rowsInserted.Add(len(rows)) + return ic.FlushBufs() +} + +const maxReadPacketSize = 4 * 1024 * 1024 + +const flushTimeout = 3 * time.Second + +func (ctx *pushCtx) Read(r io.Reader) bool { + graphiteReadCalls.Inc() + if ctx.err != nil { + return false + } + if c, ok := r.(net.Conn); ok { + if err := c.SetReadDeadline(time.Now().Add(flushTimeout)); err != nil { + graphiteReadErrors.Inc() + ctx.err = fmt.Errorf("cannot set read deadline: %s", err) + return false + } + } + lr := io.LimitReader(r, maxReadPacketSize) + ctx.reqBuf.Reset() + ctx.reqBuf.B = append(ctx.reqBuf.B[:0], ctx.tailBuf...) + n, err := io.CopyBuffer(&ctx.reqBuf, lr, ctx.copyBuf[:]) + if err != nil { + if ne, ok := err.(net.Error); ok && ne.Timeout() { + // Flush the read data on timeout and try reading again. + } else { + graphiteReadErrors.Inc() + ctx.err = fmt.Errorf("cannot read graphite plaintext protocol data: %s", err) + return false + } + } else if n < maxReadPacketSize { + // Mark the end of stream. + ctx.err = io.EOF + } + + // Parse all the rows until the last newline in ctx.reqBuf.B + nn := bytes.LastIndexByte(ctx.reqBuf.B, '\n') + ctx.tailBuf = ctx.tailBuf[:0] + if nn >= 0 { + ctx.tailBuf = append(ctx.tailBuf[:0], ctx.reqBuf.B[nn+1:]...) + ctx.reqBuf.B = ctx.reqBuf.B[:nn] + } + if err = ctx.Rows.Unmarshal(bytesutil.ToUnsafeString(ctx.reqBuf.B)); err != nil { + graphiteUnmarshalErrors.Inc() + ctx.err = fmt.Errorf("cannot unmarshal graphite plaintext protocol data with size %d: %s", len(ctx.reqBuf.B), err) + return false + } + + // Convert timestamps from seconds to milliseconds + for i := range ctx.Rows.Rows { + ctx.Rows.Rows[i].Timestamp *= 1e3 + } + return true +} + +type pushCtx struct { + Rows Rows + Common common.InsertCtx + + reqBuf bytesutil.ByteBuffer + tailBuf []byte + copyBuf [16 * 1024]byte + + err error +} + +func (ctx *pushCtx) Error() error { + if ctx.err == io.EOF { + return nil + } + return ctx.err +} + +func (ctx *pushCtx) reset() { + ctx.Rows.Reset() + ctx.Common.Reset(0) + ctx.reqBuf.Reset() + ctx.tailBuf = ctx.tailBuf[:0] + + ctx.err = nil +} + +var ( + graphiteReadCalls = metrics.NewCounter(`vm_read_calls_total{name="graphite"}`) + graphiteReadErrors = metrics.NewCounter(`vm_read_errors_total{name="graphite"}`) + graphiteUnmarshalErrors = metrics.NewCounter(`vm_unmarshal_errors_total{name="graphite"}`) +) + +func getPushCtx() *pushCtx { + select { + case ctx := <-pushCtxPoolCh: + return ctx + default: + if v := pushCtxPool.Get(); v != nil { + return v.(*pushCtx) + } + return &pushCtx{} + } +} + +func putPushCtx(ctx *pushCtx) { + ctx.reset() + select { + case pushCtxPoolCh <- ctx: + default: + pushCtxPool.Put(ctx) + } +} + +var pushCtxPool sync.Pool +var pushCtxPoolCh = make(chan *pushCtx, runtime.GOMAXPROCS(-1)) diff --git a/app/vminsert/graphite/server.go b/app/vminsert/graphite/server.go new file mode 100644 index 000000000..75879853b --- /dev/null +++ b/app/vminsert/graphite/server.go @@ -0,0 +1,137 @@ +package graphite + +import ( + "net" + "runtime" + "strings" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/metrics" +) + +var ( + writeRequestsTCP = metrics.NewCounter(`vm_graphite_requests_total{name="write", net="tcp"}`) + writeErrorsTCP = metrics.NewCounter(`vm_graphite_request_errors_total{name="write", net="tcp"}`) + + writeRequestsUDP = metrics.NewCounter(`vm_graphite_requests_total{name="write", net="udp"}`) + writeErrorsUDP = metrics.NewCounter(`vm_graphite_request_errors_total{name="write", net="udp"}`) +) + +// Serve starts graphite server on the given addr. +func Serve(addr string) { + logger.Infof("starting TCP Graphite server at %q", addr) + lnTCP, err := net.Listen("tcp4", addr) + if err != nil { + logger.Fatalf("cannot start TCP Graphite server at %q: %s", addr, err) + } + listenerTCP = lnTCP + + logger.Infof("starting UDP Graphite server at %q", addr) + lnUDP, err := net.ListenPacket("udp4", addr) + if err != nil { + logger.Fatalf("cannot start UDP Graphite server at %q: %s", addr, err) + } + listenerUDP = lnUDP + + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + serveTCP(listenerTCP) + logger.Infof("stopped TCP Graphite server at %q", addr) + }() + wg.Add(1) + go func() { + defer wg.Done() + serveUDP(listenerUDP) + logger.Infof("stopped UDP Graphite server at %q", addr) + }() + wg.Wait() +} + +func serveTCP(ln net.Listener) { + for { + c, err := ln.Accept() + if err != nil { + if ne, ok := err.(net.Error); ok { + if ne.Temporary() { + time.Sleep(time.Second) + continue + } + if strings.Contains(err.Error(), "use of closed network connection") { + break + } + logger.Fatalf("unrecoverable error when accepting TCP Graphite connections: %s", err) + } + logger.Fatalf("unexpected error when accepting TCP Graphite connections: %s", err) + } + go func() { + writeRequestsTCP.Inc() + if err := insertHandler(c); err != nil { + writeErrorsTCP.Inc() + logger.Errorf("error in TCP Graphite conn %q<->%q: %s", c.LocalAddr(), c.RemoteAddr(), err) + } + _ = c.Close() + }() + } +} + +func serveUDP(ln net.PacketConn) { + gomaxprocs := runtime.GOMAXPROCS(-1) + var wg sync.WaitGroup + for i := 0; i < gomaxprocs; i++ { + wg.Add(1) + go func() { + defer wg.Done() + var bb bytesutil.ByteBuffer + bb.B = bytesutil.Resize(bb.B, 64*1024) + for { + bb.Reset() + bb.B = bb.B[:cap(bb.B)] + n, addr, err := ln.ReadFrom(bb.B) + if err != nil { + writeErrorsUDP.Inc() + if ne, ok := err.(net.Error); ok { + if ne.Temporary() { + time.Sleep(time.Second) + continue + } + if strings.Contains(err.Error(), "use of closed network connection") { + break + } + } + logger.Errorf("cannot read Graphite UDP data: %s", err) + continue + } + bb.B = bb.B[:n] + writeRequestsUDP.Inc() + if err := insertHandler(bb.NewReader()); err != nil { + writeErrorsUDP.Inc() + logger.Errorf("error in UDP Graphite conn %q<->%q: %s", ln.LocalAddr(), addr, err) + continue + } + } + }() + } + wg.Wait() +} + +var ( + listenerTCP net.Listener + listenerUDP net.PacketConn +) + +// Stop stops the server. +func Stop() { + logger.Infof("stopping TCP Graphite server at %q...", listenerTCP.Addr()) + if err := listenerTCP.Close(); err != nil { + logger.Errorf("cannot close TCP Graphite server: %s", err) + } + logger.Infof("stopping UDP Graphite server at %q...", listenerUDP.LocalAddr()) + if err := listenerUDP.Close(); err != nil { + logger.Errorf("cannot close UDP Graphite server: %s", err) + } +} diff --git a/app/vminsert/influx/parser.go b/app/vminsert/influx/parser.go new file mode 100644 index 000000000..a2379e8dd --- /dev/null +++ b/app/vminsert/influx/parser.go @@ -0,0 +1,384 @@ +package influx + +import ( + "fmt" + "strings" + + "github.com/valyala/fastjson/fastfloat" +) + +// Rows contains parsed influx rows. +type Rows struct { + Rows []Row + + tagsPool []Tag + fieldsPool []Field +} + +// Reset resets rs. +func (rs *Rows) Reset() { + // Reset rows, tags and fields in order to remove references to old data, + // so GC could collect it. + + for i := range rs.Rows { + rs.Rows[i].reset() + } + rs.Rows = rs.Rows[:0] + + for i := range rs.tagsPool { + rs.tagsPool[i].reset() + } + rs.tagsPool = rs.tagsPool[:0] + + for i := range rs.fieldsPool { + rs.fieldsPool[i].reset() + } + rs.fieldsPool = rs.fieldsPool[:0] +} + +// Unmarshal unmarshals influx line protocol rows from s. +// +// See https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_tutorial/ +// +// s must be unchanged until rs is in use. +func (rs *Rows) Unmarshal(s string) error { + var err error + rs.Rows, rs.tagsPool, rs.fieldsPool, err = unmarshalRows(rs.Rows[:0], s, rs.tagsPool[:0], rs.fieldsPool[:0]) + if err != nil { + return err + } + return err +} + +// Row is a single influx row. +type Row struct { + Measurement string + Tags []Tag + Fields []Field + Timestamp int64 +} + +func (r *Row) reset() { + r.Measurement = "" + r.Tags = nil + r.Fields = nil + r.Timestamp = 0 +} + +func (r *Row) unmarshal(s string, tagsPool []Tag, fieldsPool []Field) ([]Tag, []Field, error) { + r.reset() + noEscapeChars := strings.IndexByte(s, '\\') < 0 + n := nextUnescapedChar(s, ' ', noEscapeChars) + if n < 0 { + return tagsPool, fieldsPool, fmt.Errorf("cannot find Whitespace I in %q", s) + } + measurementTags := s[:n] + s = s[n+1:] + + // Parse measurement and tags + var err error + n = nextUnescapedChar(measurementTags, ',', noEscapeChars) + if n >= 0 { + tagsStart := len(tagsPool) + tagsPool, err = unmarshalTags(tagsPool, measurementTags[n+1:], noEscapeChars) + if err != nil { + return tagsPool, fieldsPool, err + } + tags := tagsPool[tagsStart:] + r.Tags = tags[:len(tags):len(tags)] + measurementTags = measurementTags[:n] + } + r.Measurement = unescapeTagValue(measurementTags, noEscapeChars) + if len(r.Measurement) == 0 { + return tagsPool, fieldsPool, fmt.Errorf("measurement cannot be empty. measurementTags=%q", s) + } + + // Parse fields + fieldsStart := len(fieldsPool) + hasQuotedFields := nextUnescapedChar(s, '"', noEscapeChars) >= 0 + n = nextUnquotedChar(s, ' ', noEscapeChars, hasQuotedFields) + if n < 0 { + // No timestamp. + fieldsPool, err = unmarshalInfluxFields(fieldsPool, s, noEscapeChars, hasQuotedFields) + if err != nil { + return tagsPool, fieldsPool, err + } + fields := fieldsPool[fieldsStart:] + r.Fields = fields[:len(fields):len(fields)] + return tagsPool, fieldsPool, nil + } + fieldsPool, err = unmarshalInfluxFields(fieldsPool, s[:n], noEscapeChars, hasQuotedFields) + if err != nil { + return tagsPool, fieldsPool, err + } + r.Fields = fieldsPool[fieldsStart:] + s = s[n+1:] + + // Parse timestamp + timestamp := fastfloat.ParseInt64BestEffort(s) + if timestamp == 0 && s != "0" { + return tagsPool, fieldsPool, fmt.Errorf("cannot parse timestamp %q", s) + } + r.Timestamp = timestamp + return tagsPool, fieldsPool, nil +} + +// Tag represents influx tag. +type Tag struct { + Key string + Value string +} + +func (tag *Tag) reset() { + tag.Key = "" + tag.Value = "" +} + +func (tag *Tag) unmarshal(s string, noEscapeChars bool) error { + tag.reset() + n := nextUnescapedChar(s, '=', noEscapeChars) + if n < 0 { + return fmt.Errorf("missing tag value for %q", s) + } + tag.Key = unescapeTagValue(s[:n], noEscapeChars) + if len(tag.Key) == 0 { + return fmt.Errorf("tag key cannot be empty") + } + tag.Value = unescapeTagValue(s[n+1:], noEscapeChars) + return nil +} + +// Field represents influx field. +type Field struct { + Key string + Value float64 +} + +func (f *Field) reset() { + f.Key = "" + f.Value = 0 +} + +func (f *Field) unmarshal(s string, noEscapeChars, hasQuotedFields bool) error { + f.reset() + n := nextUnescapedChar(s, '=', noEscapeChars) + if n < 0 { + return fmt.Errorf("missing field value for %q", s) + } + f.Key = unescapeTagValue(s[:n], noEscapeChars) + if len(f.Key) == 0 { + return fmt.Errorf("field key cannot be empty") + } + v, err := parseFieldValue(s[n+1:], hasQuotedFields) + if err != nil { + return fmt.Errorf("cannot parse field value for %q: %s", f.Key, err) + } + f.Value = v + return nil +} + +func unmarshalRows(dst []Row, s string, tagsPool []Tag, fieldsPool []Field) ([]Row, []Tag, []Field, error) { + for len(s) > 0 { + n := strings.IndexByte(s, '\n') + if n == 0 { + // Skip empty line + s = s[1:] + continue + } + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Row{}) + } + r := &dst[len(dst)-1] + if n < 0 { + // The last line. + var err error + tagsPool, fieldsPool, err = r.unmarshal(s, tagsPool, fieldsPool) + if err != nil { + return dst, tagsPool, fieldsPool, err + } + return dst, tagsPool, fieldsPool, nil + } + var err error + tagsPool, fieldsPool, err = r.unmarshal(s[:n], tagsPool, fieldsPool) + if err != nil { + return dst, tagsPool, fieldsPool, err + } + s = s[n+1:] + } + return dst, tagsPool, fieldsPool, nil +} + +func unmarshalTags(dst []Tag, s string, noEscapeChars bool) ([]Tag, error) { + for { + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Tag{}) + } + tag := &dst[len(dst)-1] + n := nextUnescapedChar(s, ',', noEscapeChars) + if n < 0 { + if err := tag.unmarshal(s, noEscapeChars); err != nil { + return dst, err + } + return dst, nil + } + if err := tag.unmarshal(s[:n], noEscapeChars); err != nil { + return dst, err + } + s = s[n+1:] + } +} + +func unmarshalInfluxFields(dst []Field, s string, noEscapeChars, hasQuotedFields bool) ([]Field, error) { + for { + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Field{}) + } + f := &dst[len(dst)-1] + n := nextUnquotedChar(s, ',', noEscapeChars, hasQuotedFields) + if n < 0 { + if err := f.unmarshal(s, noEscapeChars, hasQuotedFields); err != nil { + return dst, err + } + return dst, nil + } + if err := f.unmarshal(s[:n], noEscapeChars, hasQuotedFields); err != nil { + return dst, err + } + s = s[n+1:] + } +} + +func unescapeTagValue(s string, noEscapeChars bool) string { + if noEscapeChars { + // Fast path - no escape chars. + return s + } + n := strings.IndexByte(s, '\\') + if n < 0 { + return s + } + + // Slow path. Remove escape chars. + dst := make([]byte, 0, len(s)) + for { + dst = append(dst, s[:n]...) + s = s[n+1:] + if len(s) == 0 { + return string(append(dst, '\\')) + } + ch := s[0] + if ch != ' ' && ch != ',' && ch != '=' && ch != '\\' { + dst = append(dst, '\\') + } + dst = append(dst, ch) + s = s[1:] + n = strings.IndexByte(s, '\\') + if n < 0 { + return string(append(dst, s...)) + } + } +} + +func parseFieldValue(s string, hasQuotedFields bool) (float64, error) { + if len(s) == 0 { + return 0, fmt.Errorf("field value cannot be empty") + } + if hasQuotedFields && s[0] == '"' { + if len(s) < 2 || s[len(s)-1] != '"' { + return 0, fmt.Errorf("missing closing quote for quoted field value %s", s) + } + // Quoted string is translated to empty value. + return 0, nil + } + ch := s[len(s)-1] + if ch == 'i' { + // Integer value + ss := s[:len(s)-1] + n := fastfloat.ParseInt64BestEffort(ss) + return float64(n), nil + } + if ch == 'u' { + // Unsigned integer value + ss := s[:len(s)-1] + n := fastfloat.ParseUint64BestEffort(ss) + return float64(n), nil + } + if s == "t" || s == "T" || s == "true" || s == "True" || s == "TRUE" { + return 1, nil + } + if s == "f" || s == "F" || s == "false" || s == "False" || s == "FALSE" { + return 0, nil + } + return fastfloat.ParseBestEffort(s), nil +} + +func nextUnescapedChar(s string, ch byte, noEscapeChars bool) int { + if noEscapeChars { + // Fast path: just search for ch in s, since s has no escape chars. + return strings.IndexByte(s, ch) + } + + sOrig := s +again: + n := strings.IndexByte(s, ch) + if n < 0 { + return -1 + } + if n == 0 { + return len(sOrig) - len(s) + n + } + if s[n-1] != '\\' { + return len(sOrig) - len(s) + n + } + nOrig := n + slashes := 0 + for n > 0 && s[n-1] == '\\' { + slashes++ + n-- + } + if slashes&1 == 0 { + return len(sOrig) - len(s) + nOrig + } + s = s[nOrig+1:] + goto again +} + +func nextUnquotedChar(s string, ch byte, noEscapeChars, hasQuotedFields bool) int { + if !hasQuotedFields { + return nextUnescapedChar(s, ch, noEscapeChars) + } + sOrig := s + for { + n := nextUnescapedChar(s, ch, noEscapeChars) + if n < 0 { + return -1 + } + if !isInQuote(s[:n], noEscapeChars) { + return n + len(sOrig) - len(s) + } + s = s[n+1:] + n = nextUnescapedChar(s, '"', noEscapeChars) + if n < 0 { + return -1 + } + s = s[n+1:] + } +} + +func isInQuote(s string, noEscapeChars bool) bool { + isQuote := false + for { + n := nextUnescapedChar(s, '"', noEscapeChars) + if n < 0 { + return isQuote + } + isQuote = !isQuote + s = s[n+1:] + } +} diff --git a/app/vminsert/influx/parser_test.go b/app/vminsert/influx/parser_test.go new file mode 100644 index 000000000..1f0c0d5b1 --- /dev/null +++ b/app/vminsert/influx/parser_test.go @@ -0,0 +1,341 @@ +package influx + +import ( + "reflect" + "testing" +) + +func TestNextUnquotedChar(t *testing.T) { + f := func(s string, ch byte, noUnescape bool, nExpected int) { + t.Helper() + n := nextUnquotedChar(s, ch, noUnescape, true) + if n != nExpected { + t.Fatalf("unexpected n for nextUnqotedChar(%q, '%c', %v); got %d; want %d", s, ch, noUnescape, n, nExpected) + } + } + + f(``, ' ', false, -1) + f(``, ' ', true, -1) + f(`""`, ' ', false, -1) + f(`""`, ' ', true, -1) + f(`"foo bar\" " baz`, ' ', false, 12) + f(`"foo bar\" " baz`, ' ', true, 10) +} + +func TestNextUnescapedChar(t *testing.T) { + f := func(s string, ch byte, noUnescape bool, nExpected int) { + t.Helper() + n := nextUnescapedChar(s, ch, noUnescape) + if n != nExpected { + t.Fatalf("unexpected n for nextUnescapedChar(%q, '%c', %v); got %d; want %d", s, ch, noUnescape, n, nExpected) + } + } + + f("", ' ', true, -1) + f("", ' ', false, -1) + f(" ", ' ', true, 0) + f(" ", ' ', false, 0) + f("x y", ' ', true, 1) + f("x y", ' ', false, 1) + f(`x\ y`, ' ', true, 2) + f(`x\ y`, ' ', false, 3) + f(`\\,`, ',', true, 2) + f(`\\,`, ',', false, 2) + f(`\\\=`, '=', true, 3) + f(`\\\=`, '=', false, -1) + f(`\\\=aa`, '=', true, 3) + f(`\\\=aa`, '=', false, -1) + f(`\\\=a=a`, '=', true, 3) + f(`\\\=a=a`, '=', false, 5) + f(`a\`, ' ', true, -1) + f(`a\`, ' ', false, -1) +} + +func TestUnescapeTagValue(t *testing.T) { + f := func(s, sExpected string) { + t.Helper() + ss := unescapeTagValue(s, false) + if ss != sExpected { + t.Fatalf("unexpected value for %q; got %q; want %q", s, ss, sExpected) + } + } + + f("", "") + f("x", "x") + f("foobar", "foobar") + f("привет", "привет") + f(`\a\b\cd`, `\a\b\cd`) + f(`\`, `\`) + f(`foo\`, `foo\`) + f(`\,foo\\\=\ bar`, `,foo\= bar`) +} + +func TestRowsUnmarshalFailure(t *testing.T) { + f := func(s string) { + t.Helper() + var rows Rows + if err := rows.Unmarshal(s); err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + + // Try again + if err := rows.Unmarshal(s); err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + } + + // Missing measurement + f(",foo=bar baz=123") + + // No fields + f("foo") + f("foo,bar=baz 1234") + + // Missing tag value + f("foo,bar") + f("foo,bar baz") + f("foo,bar= baz") + f("foo,bar=123, 123") + + // Missing tag name + f("foo,=bar baz=234") + + // Missing field value + f("foo bar") + f("foo bar=") + f("foo bar=,baz=23 123") + f("foo bar=1, 123") + f(`foo bar=" 123`) + f(`foo bar="123`) + f(`foo bar=",123`) + f(`foo bar=a"", 123`) + + // Missing field name + f("foo =123") + f("foo =123\nbar") + + // Invalid timestamp + f("foo bar=123 baz") +} + +func TestRowsUnmarshalSuccess(t *testing.T) { + f := func(s string, rowsExpected *Rows) { + t.Helper() + var rows Rows + if err := rows.Unmarshal(s); err != nil { + t.Fatalf("cannot unmarshal %q: %s", s, err) + } + if !reflect.DeepEqual(rows.Rows, rowsExpected.Rows) { + t.Fatalf("unexpected rows;\ngot\n%+v;\nwant\n%+v", rows.Rows, rowsExpected.Rows) + } + + // Try unmarshaling again + if err := rows.Unmarshal(s); err != nil { + t.Fatalf("cannot unmarshal %q: %s", s, err) + } + if !reflect.DeepEqual(rows.Rows, rowsExpected.Rows) { + t.Fatalf("unexpected rows;\ngot\n%+v;\nwant\n%+v", rows.Rows, rowsExpected.Rows) + } + + rows.Reset() + if len(rows.Rows) != 0 { + t.Fatalf("non-empty rows after reset: %+v", rows.Rows) + } + } + + // Empty line + f("", &Rows{}) + f("\n\n", &Rows{}) + + // Minimal line without tags and timestamp + f("foo bar=123", &Rows{ + Rows: []Row{{ + Measurement: "foo", + Fields: []Field{{ + Key: "bar", + Value: 123, + }}, + }}, + }) + f("foo bar=123\n", &Rows{ + Rows: []Row{{ + Measurement: "foo", + Fields: []Field{{ + Key: "bar", + Value: 123, + }}, + }}, + }) + + // Line without tags and with a timestamp. + f("foo bar=123.45 -345", &Rows{ + Rows: []Row{{ + Measurement: "foo", + Fields: []Field{{ + Key: "bar", + Value: 123.45, + }}, + Timestamp: -345, + }}, + }) + + // Line with a single tag + f("foo,tag1=xyz bar=123", &Rows{ + Rows: []Row{{ + Measurement: "foo", + Tags: []Tag{{ + Key: "tag1", + Value: "xyz", + }}, + Fields: []Field{{ + Key: "bar", + Value: 123, + }}, + }}, + }) + + // Line with multiple tags + f("foo,tag1=xyz,tag2=43as bar=123", &Rows{ + Rows: []Row{{ + Measurement: "foo", + Tags: []Tag{ + { + Key: "tag1", + Value: "xyz", + }, + { + Key: "tag2", + Value: "43as", + }, + }, + Fields: []Field{{ + Key: "bar", + Value: 123, + }}, + }}, + }) + + // Line with empty tag values + f("foo,tag1=xyz,tagN=,tag2=43as bar=123", &Rows{ + Rows: []Row{{ + Measurement: "foo", + Tags: []Tag{ + { + Key: "tag1", + Value: "xyz", + }, + { + Key: "tagN", + Value: "", + }, + { + Key: "tag2", + Value: "43as", + }, + }, + Fields: []Field{{ + Key: "bar", + Value: 123, + }}, + }}, + }) + + // Line with multiple tags, multiple fields and timestamp + f(`system,host=ip-172-16-10-144 uptime_format="3 days, 21:01" 1557761040000000000`, &Rows{ + Rows: []Row{{ + Measurement: "system", + Tags: []Tag{{ + Key: "host", + Value: "ip-172-16-10-144", + }}, + Fields: []Field{{ + Key: "uptime_format", + Value: 0, + }}, + Timestamp: 1557761040000000000, + }}, + }) + f(`foo,tag1=xyz,tag2=43as bar=-123e4,x=True,y=-45i,z=f,aa="f,= \"a",bb=23u 48934`, &Rows{ + Rows: []Row{{ + Measurement: "foo", + Tags: []Tag{ + { + Key: "tag1", + Value: "xyz", + }, + { + Key: "tag2", + Value: "43as", + }, + }, + Fields: []Field{ + { + Key: "bar", + Value: -123e4, + }, + { + Key: "x", + Value: 1, + }, + { + Key: "y", + Value: -45, + }, + { + Key: "z", + Value: 0, + }, + { + Key: "aa", + Value: 0, + }, + { + Key: "bb", + Value: 23, + }, + }, + Timestamp: 48934, + }}, + }) + + // Escape chars + f(`fo\,bar\=baz,x\==\\a\,\=\q\ \\\a\=\,=4.34`, &Rows{ + Rows: []Row{{ + Measurement: `fo,bar=baz`, + Tags: []Tag{{ + Key: `x=`, + Value: `\a,=\q `, + }}, + Fields: []Field{{ + Key: `\\a=,`, + Value: 4.34, + }}, + }}, + }) + + // Multiple lines + f("foo,tag=xyz field=1.23 48934\n"+ + "bar x=-1i\n\n", &Rows{ + Rows: []Row{ + { + Measurement: "foo", + Tags: []Tag{{ + Key: "tag", + Value: "xyz", + }}, + Fields: []Field{{ + Key: "field", + Value: 1.23, + }}, + Timestamp: 48934, + }, + { + Measurement: "bar", + Fields: []Field{{ + Key: "x", + Value: -1, + }}, + }, + }, + }) +} diff --git a/app/vminsert/influx/parser_timing_test.go b/app/vminsert/influx/parser_timing_test.go new file mode 100644 index 000000000..1d05b9956 --- /dev/null +++ b/app/vminsert/influx/parser_timing_test.go @@ -0,0 +1,20 @@ +package influx + +import ( + "fmt" + "testing" +) + +func BenchmarkRowsUnmarshal(b *testing.B) { + s := `cpu usage_user=1.23,usage_system=4.34,usage_iowait=0.1112 1234556768` + b.SetBytes(int64(len(s))) + b.ReportAllocs() + b.RunParallel(func(pb *testing.PB) { + var rows Rows + for pb.Next() { + if err := rows.Unmarshal(s); err != nil { + panic(fmt.Errorf("cannot unmarshal %q: %s", s, err)) + } + } + }) +} diff --git a/app/vminsert/influx/request_handler.go b/app/vminsert/influx/request_handler.go new file mode 100644 index 000000000..2c713f66c --- /dev/null +++ b/app/vminsert/influx/request_handler.go @@ -0,0 +1,244 @@ +package influx + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "net/http" + "runtime" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/common" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/concurrencylimiter" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/VictoriaMetrics/metrics" +) + +var rowsInserted = metrics.NewCounter(`vm_rows_inserted_total{type="influx"}`) + +// InsertHandler processes remote write for influx line protocol. +// +// See https://github.com/influxdata/influxdb/blob/4cbdc197b8117fee648d62e2e5be75c6575352f0/tsdb/README.md +func InsertHandler(req *http.Request) error { + return concurrencylimiter.Do(func() error { + return insertHandlerInternal(req) + }) +} + +func insertHandlerInternal(req *http.Request) error { + influxReadCalls.Inc() + + r := req.Body + if req.Header.Get("Content-Encoding") == "gzip" { + zr, err := getGzipReader(r) + if err != nil { + return fmt.Errorf("cannot read gzipped influx line protocol data: %s", err) + } + defer putGzipReader(zr) + r = zr + } + + q := req.URL.Query() + tsMultiplier := int64(1e6) + switch q.Get("precision") { + case "ns": + tsMultiplier = 1e6 + case "u": + tsMultiplier = 1e3 + case "ms": + tsMultiplier = 1 + case "s": + tsMultiplier = -1e3 + case "m": + tsMultiplier = -1e3 * 60 + case "h": + tsMultiplier = -1e3 * 3600 + } + + // Read db tag from https://docs.influxdata.com/influxdb/v1.7/tools/api/#write-http-endpoint + db := q.Get("db") + + ctx := getPushCtx() + defer putPushCtx(ctx) + for ctx.Read(r, tsMultiplier) { + if err := ctx.InsertRows(db); err != nil { + return err + } + } + return ctx.Error() +} + +func (ctx *pushCtx) InsertRows(db string) error { + rows := ctx.Rows.Rows + rowsLen := 0 + for i := range rows { + rowsLen += len(rows[i].Tags) + } + ic := &ctx.Common + ic.Reset(rowsLen) + for i := range rows { + r := &rows[i] + ic.Labels = ic.Labels[:0] + ic.AddLabel("db", db) + for j := range r.Tags { + tag := &r.Tags[j] + ic.AddLabel(tag.Key, tag.Value) + } + ctx.metricNameBuf = storage.MarshalMetricNameRaw(ctx.metricNameBuf[:0], ic.Labels) + ctx.metricGroupBuf = append(ctx.metricGroupBuf[:0], r.Measurement...) + ctx.metricGroupBuf = append(ctx.metricGroupBuf, '.') + metricGroupPrefixLen := len(ctx.metricGroupBuf) + for j := range r.Fields { + f := &r.Fields[j] + ctx.metricGroupBuf = append(ctx.metricGroupBuf[:metricGroupPrefixLen], f.Key...) + metricGroup := bytesutil.ToUnsafeString(ctx.metricGroupBuf) + ic.Labels = ic.Labels[:0] + ic.AddLabel("", metricGroup) + ic.WriteDataPoint(ctx.metricNameBuf, ic.Labels[:1], r.Timestamp, f.Value) + } + rowsInserted.Add(len(r.Fields)) + } + return ic.FlushBufs() +} + +func getGzipReader(r io.Reader) (*gzip.Reader, error) { + v := gzipReaderPool.Get() + if v == nil { + return gzip.NewReader(r) + } + zr := v.(*gzip.Reader) + if err := zr.Reset(r); err != nil { + return nil, err + } + return zr, nil +} + +func putGzipReader(zr *gzip.Reader) { + _ = zr.Close() + gzipReaderPool.Put(zr) +} + +var gzipReaderPool sync.Pool + +const maxReadPacketSize = 4 * 1024 * 1024 + +func (ctx *pushCtx) Read(r io.Reader, tsMultiplier int64) bool { + if ctx.err != nil { + return false + } + lr := io.LimitReader(r, maxReadPacketSize) + ctx.reqBuf.Reset() + ctx.reqBuf.B = append(ctx.reqBuf.B[:0], ctx.tailBuf...) + n, err := io.CopyBuffer(&ctx.reqBuf, lr, ctx.copyBuf[:]) + if err != nil { + influxReadErrors.Inc() + ctx.err = fmt.Errorf("cannot read influx line protocol data: %s", err) + return false + } + if n < maxReadPacketSize { + // Mark the end of stream. + ctx.err = io.EOF + } + + // Parse all the rows until the last newline in ctx.reqBuf.B + nn := bytes.LastIndexByte(ctx.reqBuf.B, '\n') + ctx.tailBuf = ctx.tailBuf[:0] + if nn >= 0 { + ctx.tailBuf = append(ctx.tailBuf[:0], ctx.reqBuf.B[nn+1:]...) + ctx.reqBuf.B = ctx.reqBuf.B[:nn] + } + if err = ctx.Rows.Unmarshal(bytesutil.ToUnsafeString(ctx.reqBuf.B)); err != nil { + influxUnmarshalErrors.Inc() + ctx.err = fmt.Errorf("cannot unmarshal influx line protocol data with size %d: %s", len(ctx.reqBuf.B), err) + return false + } + + // Adjust timestamps according to tsMultiplier + currentTs := time.Now().UnixNano() / 1e6 + if tsMultiplier >= 1 { + for i := range ctx.Rows.Rows { + row := &ctx.Rows.Rows[i] + if row.Timestamp == 0 { + row.Timestamp = currentTs + } else { + row.Timestamp /= tsMultiplier + } + } + } else if tsMultiplier < 0 { + tsMultiplier = -tsMultiplier + for i := range ctx.Rows.Rows { + row := &ctx.Rows.Rows[i] + if row.Timestamp == 0 { + row.Timestamp = currentTs + } else { + row.Timestamp *= tsMultiplier + } + } + } + return true +} + +var ( + influxReadCalls = metrics.NewCounter(`vm_read_calls_total{name="influx"}`) + influxReadErrors = metrics.NewCounter(`vm_read_errors_total{name="influx"}`) + influxUnmarshalErrors = metrics.NewCounter(`vm_unmarshal_errors_total{name="influx"}`) +) + +type pushCtx struct { + Rows Rows + Common common.InsertCtx + + reqBuf bytesutil.ByteBuffer + tailBuf []byte + copyBuf [16 * 1024]byte + metricNameBuf []byte + metricGroupBuf []byte + + err error +} + +func (ctx *pushCtx) Error() error { + if ctx.err == io.EOF { + return nil + } + return ctx.err +} + +func (ctx *pushCtx) reset() { + ctx.Rows.Reset() + ctx.Common.Reset(0) + + ctx.reqBuf.Reset() + ctx.tailBuf = ctx.tailBuf[:0] + ctx.metricNameBuf = ctx.metricNameBuf[:0] + ctx.metricGroupBuf = ctx.metricGroupBuf[:0] + + ctx.err = nil +} + +func getPushCtx() *pushCtx { + select { + case ctx := <-pushCtxPoolCh: + return ctx + default: + if v := pushCtxPool.Get(); v != nil { + return v.(*pushCtx) + } + return &pushCtx{} + } +} + +func putPushCtx(ctx *pushCtx) { + ctx.reset() + select { + case pushCtxPoolCh <- ctx: + default: + pushCtxPool.Put(ctx) + } +} + +var pushCtxPool sync.Pool +var pushCtxPoolCh = make(chan *pushCtx, runtime.GOMAXPROCS(-1)) diff --git a/app/vminsert/main.go b/app/vminsert/main.go new file mode 100644 index 000000000..eff463b81 --- /dev/null +++ b/app/vminsert/main.go @@ -0,0 +1,84 @@ +package vminsert + +import ( + "flag" + "fmt" + "net/http" + "strings" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/graphite" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/influx" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/opentsdb" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/prometheus" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver" + "github.com/VictoriaMetrics/metrics" +) + +var ( + graphiteListenAddr = flag.String("graphiteListenAddr", "", "TCP and UDP address to listen for Graphite plaintext data. Usually :2003 must be set. Doesn't work if empty") + opentsdbListenAddr = flag.String("opentsdbListenAddr", "", "TCP and UDP address to listen for OpentTSDB put messages. Usually :4242 must be set. Doesn't work if empty") + maxInsertRequestSize = flag.Int("maxInsertRequestSize", 32*1024*1024, "The maximum size of a single insert request in bytes") +) + +// Init initializes vminsert. +func Init() { + if len(*graphiteListenAddr) > 0 { + go graphite.Serve(*graphiteListenAddr) + } + if len(*opentsdbListenAddr) > 0 { + go opentsdb.Serve(*opentsdbListenAddr) + } +} + +// Stop stops vminsert. +func Stop() { + if len(*graphiteListenAddr) > 0 { + graphite.Stop() + } + if len(*opentsdbListenAddr) > 0 { + opentsdb.Stop() + } +} + +// RequestHandler is a handler for Prometheus remote storage write API +func RequestHandler(w http.ResponseWriter, r *http.Request) bool { + path := strings.Replace(r.URL.Path, "//", "/", -1) + switch path { + case "/api/v1/write": + prometheusWriteRequests.Inc() + if err := prometheus.InsertHandler(r, int64(*maxInsertRequestSize)); err != nil { + prometheusWriteErrors.Inc() + httpserver.Errorf(w, "error in %q: %s", r.URL.Path, err) + return true + } + w.WriteHeader(http.StatusNoContent) + return true + case "/write", "/api/v2/write": + influxWriteRequests.Inc() + if err := influx.InsertHandler(r); err != nil { + influxWriteErrors.Inc() + httpserver.Errorf(w, "error in %q: %s", r.URL.Path, err) + return true + } + w.WriteHeader(http.StatusNoContent) + return true + case "/query": + // Emulate fake response for influx query + influxQueryRequests.Inc() + fmt.Fprintf(w, `{"results":[{"series":[{"values":[]}]}]}`) + return true + default: + // This is not our link + return false + } +} + +var ( + prometheusWriteRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/write", protocol="prometheus"}`) + prometheusWriteErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/write", protocol="prometheus"}`) + + influxWriteRequests = metrics.NewCounter(`vm_http_requests_total{path="/write", protocol="influx"}`) + influxWriteErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/write", protocol="influx"}`) + + influxQueryRequests = metrics.NewCounter(`vm_http_requests_total{path="/query", protocol="influx"}`) +) diff --git a/app/vminsert/opentsdb/parser.go b/app/vminsert/opentsdb/parser.go new file mode 100644 index 000000000..31d2b172d --- /dev/null +++ b/app/vminsert/opentsdb/parser.go @@ -0,0 +1,175 @@ +package opentsdb + +import ( + "fmt" + "strings" + + "github.com/valyala/fastjson/fastfloat" +) + +// Rows contains parsed OpenTSDB rows. +type Rows struct { + Rows []Row + + tagsPool []Tag +} + +// Reset resets rs. +func (rs *Rows) Reset() { + // Release references to objects, so they can be GC'ed. + + for i := range rs.Rows { + rs.Rows[i].reset() + } + rs.Rows = rs.Rows[:0] + + for i := range rs.tagsPool { + rs.tagsPool[i].reset() + } + rs.tagsPool = rs.tagsPool[:0] +} + +// Unmarshal unmarshals OpenTSDB put rows from s. +// +// See http://opentsdb.net/docs/build/html/api_telnet/put.html +// +// s must be unchanged until rs is in use. +func (rs *Rows) Unmarshal(s string) error { + var err error + rs.Rows, rs.tagsPool, err = unmarshalRows(rs.Rows[:0], s, rs.tagsPool[:0]) + if err != nil { + return err + } + return err +} + +// Row is a single OpenTSDB row. +type Row struct { + Metric string + Tags []Tag + Value float64 + Timestamp int64 +} + +func (r *Row) reset() { + r.Metric = "" + r.Tags = nil + r.Value = 0 + r.Timestamp = 0 +} + +func (r *Row) unmarshal(s string, tagsPool []Tag) ([]Tag, error) { + r.reset() + if !strings.HasPrefix(s, "put ") { + return tagsPool, fmt.Errorf("missing `put ` prefix in %q", s) + } + s = s[len("put "):] + n := strings.IndexByte(s, ' ') + if n < 0 { + return tagsPool, fmt.Errorf("cannot find whitespace between metric and timestamp in %q", s) + } + r.Metric = s[:n] + tail := s[n+1:] + n = strings.IndexByte(tail, ' ') + if n < 0 { + return tagsPool, fmt.Errorf("cannot find whitespace between timestamp and value in %q", s) + } + r.Timestamp = int64(fastfloat.ParseBestEffort(tail[:n])) + tail = tail[n+1:] + n = strings.IndexByte(tail, ' ') + if n < 0 { + return tagsPool, fmt.Errorf("cannot find whitespace between value and the first tag in %q", s) + } + r.Value = fastfloat.ParseBestEffort(tail[:n]) + var err error + tagsStart := len(tagsPool) + tagsPool, err = unmarshalTags(tagsPool, tail[n+1:]) + if err != nil { + return tagsPool, fmt.Errorf("cannot unmarshal tags in %q: %s", s, err) + } + tags := tagsPool[tagsStart:] + r.Tags = tags[:len(tags):len(tags)] + return tagsPool, nil +} + +func unmarshalRows(dst []Row, s string, tagsPool []Tag) ([]Row, []Tag, error) { + for len(s) > 0 { + n := strings.IndexByte(s, '\n') + if n == 0 { + // Skip empty line + s = s[1:] + continue + } + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Row{}) + } + r := &dst[len(dst)-1] + if n < 0 { + // The last line. + var err error + tagsPool, err = r.unmarshal(s, tagsPool) + if err != nil { + return dst, tagsPool, err + } + return dst, tagsPool, nil + } + var err error + tagsPool, err = r.unmarshal(s[:n], tagsPool) + if err != nil { + return dst, tagsPool, err + } + s = s[n+1:] + } + return dst, tagsPool, nil +} + +func unmarshalTags(dst []Tag, s string) ([]Tag, error) { + for { + if cap(dst) > len(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, Tag{}) + } + tag := &dst[len(dst)-1] + + n := strings.IndexByte(s, ' ') + if n < 0 { + // The last tag found + if err := tag.unmarshal(s); err != nil { + return dst[:len(dst)-1], err + } + return dst, nil + } + if err := tag.unmarshal(s[:n]); err != nil { + return dst[:len(dst)-1], err + } + s = s[n+1:] + } +} + +// Tag is an OpenTSDB tag. +type Tag struct { + Key string + Value string +} + +func (t *Tag) reset() { + t.Key = "" + t.Value = "" +} + +func (t *Tag) unmarshal(s string) error { + t.reset() + n := strings.IndexByte(s, '=') + if n < 0 { + return fmt.Errorf("missing tag value for %q", s) + } + t.Key = s[:n] + if len(t.Key) == 0 { + return fmt.Errorf("tag key cannot be empty for %q", s) + } + t.Value = s[n+1:] + return nil +} diff --git a/app/vminsert/opentsdb/parser_test.go b/app/vminsert/opentsdb/parser_test.go new file mode 100644 index 000000000..35b57d37d --- /dev/null +++ b/app/vminsert/opentsdb/parser_test.go @@ -0,0 +1,203 @@ +package opentsdb + +import ( + "reflect" + "testing" +) + +func TestRowsUnmarshalFailure(t *testing.T) { + f := func(s string) { + t.Helper() + var rows Rows + if err := rows.Unmarshal(s); err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + + // Try again + if err := rows.Unmarshal(s); err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + } + + // Missing put prefix + f("xx") + + // Missing timestamp + f("put aaa") + + // Missing value + f("put aaa 1123") + + // Invalid timestamp + f("put aaa timestamp") + + // Missing first tag + f("put aaa 123 43") + + // Invalid value + f("put aaa 123 invalid-value") + + // Invalid multiline + f("put aaa\nbbb 123 34") + + // Invalid tag + f("put aaa 123 4.5 foo") + f("put aaa 123 4.5 =") + f("put aaa 123 4.5 =foo") + f("put aaa 123 4.5 =foo a=b") +} + +func TestRowsUnmarshalSuccess(t *testing.T) { + f := func(s string, rowsExpected *Rows) { + t.Helper() + var rows Rows + if err := rows.Unmarshal(s); err != nil { + t.Fatalf("cannot unmarshal %q: %s", s, err) + } + if !reflect.DeepEqual(rows.Rows, rowsExpected.Rows) { + t.Fatalf("unexpected rows;\ngot\n%+v;\nwant\n%+v", rows.Rows, rowsExpected.Rows) + } + + // Try unmarshaling again + if err := rows.Unmarshal(s); err != nil { + t.Fatalf("cannot unmarshal %q: %s", s, err) + } + if !reflect.DeepEqual(rows.Rows, rowsExpected.Rows) { + t.Fatalf("unexpected rows;\ngot\n%+v;\nwant\n%+v", rows.Rows, rowsExpected.Rows) + } + + rows.Reset() + if len(rows.Rows) != 0 { + t.Fatalf("non-empty rows after reset: %+v", rows.Rows) + } + } + + // Empty line + f("", &Rows{}) + f("\n\n", &Rows{}) + + // Single line + f("put foobar 789 -123.456 a=b", &Rows{ + Rows: []Row{{ + Metric: "foobar", + Value: -123.456, + Timestamp: 789, + Tags: []Tag{{ + Key: "a", + Value: "b", + }}, + }}, + }) + // Empty tag value + f("put foobar 789 -123.456 a= b=c", &Rows{ + Rows: []Row{{ + Metric: "foobar", + Value: -123.456, + Timestamp: 789, + Tags: []Tag{ + { + Key: "a", + Value: "", + }, + { + Key: "b", + Value: "c", + }, + }, + }}, + }) + // Fractional timestamp that is supported by Akumuli. + f("put foobar 789.4 -123.456 a=b", &Rows{ + Rows: []Row{{ + Metric: "foobar", + Value: -123.456, + Timestamp: 789, + Tags: []Tag{{ + Key: "a", + Value: "b", + }}, + }}, + }) + f("put foo.bar 789 123.456 a=b\n", &Rows{ + Rows: []Row{{ + Metric: "foo.bar", + Value: 123.456, + Timestamp: 789, + Tags: []Tag{{ + Key: "a", + Value: "b", + }}, + }}, + }) + + // Tags + f("put foo 2 1 bar=baz", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{{ + Key: "bar", + Value: "baz", + }}, + Value: 1, + Timestamp: 2, + }}, + }) + f("put foo 2 1 bar=baz x=y", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{ + { + Key: "bar", + Value: "baz", + }, + { + Key: "x", + Value: "y", + }, + }, + Value: 1, + Timestamp: 2, + }}, + }) + f("put foo 2 1 bar=baz=aaa x=y", &Rows{ + Rows: []Row{{ + Metric: "foo", + Tags: []Tag{ + { + Key: "bar", + Value: "baz=aaa", + }, + { + Key: "x", + Value: "y", + }, + }, + Value: 1, + Timestamp: 2, + }}, + }) + + // Multi lines + f("put foo 2 0.3 a=b\nput bar.baz 43 0.34 a=b\n", &Rows{ + Rows: []Row{ + { + Metric: "foo", + Value: 0.3, + Timestamp: 2, + Tags: []Tag{{ + Key: "a", + Value: "b", + }}, + }, + { + Metric: "bar.baz", + Value: 0.34, + Timestamp: 43, + Tags: []Tag{{ + Key: "a", + Value: "b", + }}, + }, + }, + }) +} diff --git a/app/vminsert/opentsdb/parser_timing_test.go b/app/vminsert/opentsdb/parser_timing_test.go new file mode 100644 index 000000000..4410584b5 --- /dev/null +++ b/app/vminsert/opentsdb/parser_timing_test.go @@ -0,0 +1,24 @@ +package opentsdb + +import ( + "fmt" + "testing" +) + +func BenchmarkRowsUnmarshal(b *testing.B) { + s := `cpu.usage_user 1234556768 1.23 a=b +cpu.usage_system 1234556768 23.344 a=b +cpu.usage_iowait 1234556769 3.3443 a=b +cpu.usage_irq 1234556768 0.34432 a=b +` + b.SetBytes(int64(len(s))) + b.ReportAllocs() + b.RunParallel(func(pb *testing.PB) { + var rows Rows + for pb.Next() { + if err := rows.Unmarshal(s); err != nil { + panic(fmt.Errorf("cannot unmarshal %q: %s", s, err)) + } + } + }) +} diff --git a/app/vminsert/opentsdb/request_handler.go b/app/vminsert/opentsdb/request_handler.go new file mode 100644 index 000000000..eef981a5f --- /dev/null +++ b/app/vminsert/opentsdb/request_handler.go @@ -0,0 +1,166 @@ +package opentsdb + +import ( + "bytes" + "fmt" + "io" + "net" + "runtime" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/common" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/concurrencylimiter" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/metrics" +) + +var rowsInserted = metrics.NewCounter(`vm_rows_inserted_total{type="opentsdb"}`) + +// insertHandler processes remote write for OpenTSDB put protocol. +// +// See http://opentsdb.net/docs/build/html/api_telnet/put.html +func insertHandler(r io.Reader) error { + return concurrencylimiter.Do(func() error { + return insertHandlerInternal(r) + }) +} + +func insertHandlerInternal(r io.Reader) error { + ctx := getPushCtx() + defer putPushCtx(ctx) + for ctx.Read(r) { + if err := ctx.InsertRows(); err != nil { + return err + } + } + return ctx.Error() +} + +func (ctx *pushCtx) InsertRows() error { + rows := ctx.Rows.Rows + ic := &ctx.Common + ic.Reset(len(rows)) + for i := range rows { + r := &rows[i] + ic.Labels = ic.Labels[:0] + ic.AddLabel("", r.Metric) + for j := range r.Tags { + tag := &r.Tags[j] + ic.AddLabel(tag.Key, tag.Value) + } + ic.WriteDataPoint(nil, ic.Labels, r.Timestamp, r.Value) + } + rowsInserted.Add(len(rows)) + return ic.FlushBufs() +} + +const maxReadPacketSize = 4 * 1024 * 1024 + +const flushTimeout = 3 * time.Second + +func (ctx *pushCtx) Read(r io.Reader) bool { + opentsdbReadCalls.Inc() + if ctx.err != nil { + return false + } + if c, ok := r.(net.Conn); ok { + if err := c.SetReadDeadline(time.Now().Add(flushTimeout)); err != nil { + opentsdbReadErrors.Inc() + ctx.err = fmt.Errorf("cannot set read deadline: %s", err) + return false + } + } + lr := io.LimitReader(r, maxReadPacketSize) + ctx.reqBuf.Reset() + ctx.reqBuf.B = append(ctx.reqBuf.B[:0], ctx.tailBuf...) + n, err := io.CopyBuffer(&ctx.reqBuf, lr, ctx.copyBuf[:]) + if err != nil { + if ne, ok := err.(net.Error); ok && ne.Timeout() { + // Flush the read data on timeout and try reading again. + } else { + opentsdbReadErrors.Inc() + ctx.err = fmt.Errorf("cannot read OpenTSDB put protocol data: %s", err) + return false + } + } else if n < maxReadPacketSize { + // Mark the end of stream. + ctx.err = io.EOF + } + + // Parse all the rows until the last newline in ctx.reqBuf.B + nn := bytes.LastIndexByte(ctx.reqBuf.B, '\n') + ctx.tailBuf = ctx.tailBuf[:0] + if nn >= 0 { + ctx.tailBuf = append(ctx.tailBuf[:0], ctx.reqBuf.B[nn+1:]...) + ctx.reqBuf.B = ctx.reqBuf.B[:nn] + } + if err = ctx.Rows.Unmarshal(bytesutil.ToUnsafeString(ctx.reqBuf.B)); err != nil { + opentsdbUnmarshalErrors.Inc() + ctx.err = fmt.Errorf("cannot unmarshal OpenTSDB put protocol data with size %d: %s", len(ctx.reqBuf.B), err) + return false + } + + // Convert timestamps from seconds to milliseconds + for i := range ctx.Rows.Rows { + ctx.Rows.Rows[i].Timestamp *= 1e3 + } + return true +} + +type pushCtx struct { + Rows Rows + Common common.InsertCtx + + reqBuf bytesutil.ByteBuffer + tailBuf []byte + copyBuf [16 * 1024]byte + + err error +} + +func (ctx *pushCtx) Error() error { + if ctx.err == io.EOF { + return nil + } + return ctx.err +} + +func (ctx *pushCtx) reset() { + ctx.Rows.Reset() + ctx.Common.Reset(0) + ctx.reqBuf.Reset() + ctx.tailBuf = ctx.tailBuf[:0] + + ctx.err = nil +} + +var ( + opentsdbReadCalls = metrics.NewCounter(`vm_read_calls_total{name="opentsdb"}`) + opentsdbReadErrors = metrics.NewCounter(`vm_read_errors_total{name="opentsdb"}`) + opentsdbUnmarshalErrors = metrics.NewCounter(`vm_unmarshal_errors_total{name="opentsdb"}`) +) + +func getPushCtx() *pushCtx { + select { + case ctx := <-pushCtxPoolCh: + return ctx + default: + if v := pushCtxPool.Get(); v != nil { + return v.(*pushCtx) + } + return &pushCtx{} + } +} + +func putPushCtx(ctx *pushCtx) { + ctx.reset() + select { + case pushCtxPoolCh <- ctx: + default: + pushCtxPool.Put(ctx) + } +} + +var pushCtxPool sync.Pool +var pushCtxPoolCh = make(chan *pushCtx, runtime.GOMAXPROCS(-1)) diff --git a/app/vminsert/opentsdb/server.go b/app/vminsert/opentsdb/server.go new file mode 100644 index 000000000..b7f37a0ce --- /dev/null +++ b/app/vminsert/opentsdb/server.go @@ -0,0 +1,137 @@ +package opentsdb + +import ( + "net" + "runtime" + "strings" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/metrics" +) + +var ( + writeRequestsTCP = metrics.NewCounter(`vm_opentsdb_requests_total{name="write", net="tcp"}`) + writeErrorsTCP = metrics.NewCounter(`vm_opentsdb_request_errors_total{name="write", net="tcp"}`) + + writeRequestsUDP = metrics.NewCounter(`vm_opentsdb_requests_total{name="write", net="udp"}`) + writeErrorsUDP = metrics.NewCounter(`vm_opentsdb_request_errors_total{name="write", net="udp"}`) +) + +// Serve starts OpenTSDB collector on the given addr. +func Serve(addr string) { + logger.Infof("starting TCP OpenTSDB collector at %q", addr) + lnTCP, err := net.Listen("tcp4", addr) + if err != nil { + logger.Fatalf("cannot start TCP OpenTSDB collector at %q: %s", addr, err) + } + listenerTCP = lnTCP + + logger.Infof("starting UDP OpenTSDB collector at %q", addr) + lnUDP, err := net.ListenPacket("udp4", addr) + if err != nil { + logger.Fatalf("cannot start UDP OpenTSDB collector at %q: %s", addr, err) + } + listenerUDP = lnUDP + + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + serveTCP(listenerTCP) + logger.Infof("stopped TCP OpenTSDB collector at %q", addr) + }() + wg.Add(1) + go func() { + defer wg.Done() + serveUDP(listenerUDP) + logger.Infof("stopped UDP OpenTSDB collector at %q", addr) + }() + wg.Wait() +} + +func serveTCP(ln net.Listener) { + for { + c, err := ln.Accept() + if err != nil { + if ne, ok := err.(net.Error); ok { + if ne.Temporary() { + time.Sleep(time.Second) + continue + } + if strings.Contains(err.Error(), "use of closed network connection") { + break + } + logger.Fatalf("unrecoverable error when accepting TCP OpenTSDB connections: %s", err) + } + logger.Fatalf("unexpected error when accepting TCP OpenTSDB connections: %s", err) + } + go func() { + writeRequestsTCP.Inc() + if err := insertHandler(c); err != nil { + writeErrorsTCP.Inc() + logger.Errorf("error in TCP OpenTSDB conn %q<->%q: %s", c.LocalAddr(), c.RemoteAddr(), err) + } + _ = c.Close() + }() + } +} + +func serveUDP(ln net.PacketConn) { + gomaxprocs := runtime.GOMAXPROCS(-1) + var wg sync.WaitGroup + for i := 0; i < gomaxprocs; i++ { + wg.Add(1) + go func() { + defer wg.Done() + var bb bytesutil.ByteBuffer + bb.B = bytesutil.Resize(bb.B, 64*1024) + for { + bb.Reset() + bb.B = bb.B[:cap(bb.B)] + n, addr, err := ln.ReadFrom(bb.B) + if err != nil { + writeErrorsUDP.Inc() + if ne, ok := err.(net.Error); ok { + if ne.Temporary() { + time.Sleep(time.Second) + continue + } + if strings.Contains(err.Error(), "use of closed network connection") { + break + } + } + logger.Errorf("cannot read OpenTSDB UDP data: %s", err) + continue + } + bb.B = bb.B[:n] + writeRequestsUDP.Inc() + if err := insertHandler(bb.NewReader()); err != nil { + writeErrorsUDP.Inc() + logger.Errorf("error in UDP OpenTSDB conn %q<->%q: %s", ln.LocalAddr(), addr, err) + continue + } + } + }() + } + wg.Wait() +} + +var ( + listenerTCP net.Listener + listenerUDP net.PacketConn +) + +// Stop stops the server. +func Stop() { + logger.Infof("stopping TCP OpenTSDB server at %q...", listenerTCP.Addr()) + if err := listenerTCP.Close(); err != nil { + logger.Errorf("cannot close TCP OpenTSDB server: %s", err) + } + logger.Infof("stopping UDP OpenTSDB server at %q...", listenerUDP.LocalAddr()) + if err := listenerUDP.Close(); err != nil { + logger.Errorf("cannot close UDP OpenTSDB server: %s", err) + } +} diff --git a/app/vminsert/prometheus/request_handler.go b/app/vminsert/prometheus/request_handler.go new file mode 100644 index 000000000..ab544afac --- /dev/null +++ b/app/vminsert/prometheus/request_handler.go @@ -0,0 +1,106 @@ +package prometheus + +import ( + "fmt" + "net/http" + "runtime" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/common" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vminsert/concurrencylimiter" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompb" + "github.com/VictoriaMetrics/metrics" +) + +var rowsInserted = metrics.NewCounter(`vm_rows_inserted_total{type="prometheus"}`) + +// InsertHandler processes remote write for prometheus. +func InsertHandler(r *http.Request, maxSize int64) error { + return concurrencylimiter.Do(func() error { + return insertHandlerInternal(r, maxSize) + }) +} + +func insertHandlerInternal(r *http.Request, maxSize int64) error { + ctx := getPushCtx() + defer putPushCtx(ctx) + if err := ctx.Read(r, maxSize); err != nil { + return err + } + timeseries := ctx.req.Timeseries + rowsLen := 0 + for i := range timeseries { + rowsLen += len(timeseries[i].Samples) + } + ic := &ctx.Common + ic.Reset(rowsLen) + for i := range timeseries { + ts := ×eries[i] + var metricNameRaw []byte + for i := range ts.Samples { + r := &ts.Samples[i] + metricNameRaw = ic.WriteDataPointExt(metricNameRaw, ts.Labels, r.Timestamp, r.Value) + } + rowsInserted.Add(len(ts.Samples)) + } + return ic.FlushBufs() +} + +type pushCtx struct { + Common common.InsertCtx + + req prompb.WriteRequest + reqBuf []byte +} + +func (ctx *pushCtx) reset() { + ctx.Common.Reset(0) + ctx.req.Reset() + ctx.reqBuf = ctx.reqBuf[:0] +} + +func (ctx *pushCtx) Read(r *http.Request, maxSize int64) error { + prometheusReadCalls.Inc() + + var err error + ctx.reqBuf, err = prompb.ReadSnappy(ctx.reqBuf[:0], r.Body, maxSize) + if err != nil { + prometheusReadErrors.Inc() + return fmt.Errorf("cannot read prompb.WriteRequest: %s", err) + } + if err = ctx.req.Unmarshal(ctx.reqBuf); err != nil { + prometheusUnmarshalErrors.Inc() + return fmt.Errorf("cannot unmarshal prompb.WriteRequest with size %d bytes: %s", len(ctx.reqBuf), err) + } + return nil +} + +var ( + prometheusReadCalls = metrics.NewCounter(`vm_read_calls_total{name="prometheus"}`) + prometheusReadErrors = metrics.NewCounter(`vm_read_errors_total{name="prometheus"}`) + prometheusUnmarshalErrors = metrics.NewCounter(`vm_unmarshal_errors_total{name="prometheus"}`) +) + +func getPushCtx() *pushCtx { + select { + case ctx := <-pushCtxPoolCh: + return ctx + default: + if v := pushCtxPool.Get(); v != nil { + return v.(*pushCtx) + } + return &pushCtx{} + } +} + +func putPushCtx(ctx *pushCtx) { + ctx.reset() + select { + case pushCtxPoolCh <- ctx: + default: + pushCtxPool.Put(ctx) + } +} + +var pushCtxPool sync.Pool +var pushCtxPoolCh = make(chan *pushCtx, runtime.GOMAXPROCS(-1)) diff --git a/app/vmselect/README.md b/app/vmselect/README.md new file mode 100644 index 000000000..1335e9407 --- /dev/null +++ b/app/vmselect/README.md @@ -0,0 +1,2 @@ +`vmselect` performs the incoming queries and fetches the required data +from `vmstorage`. diff --git a/app/vmselect/main.go b/app/vmselect/main.go new file mode 100644 index 000000000..4561abec4 --- /dev/null +++ b/app/vmselect/main.go @@ -0,0 +1,189 @@ +package vmselect + +import ( + "flag" + "net/http" + "runtime" + "strings" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/prometheus" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/promql" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/metrics" +) + +var ( + deleteAuthKey = flag.String("deleteAuthKey", "", "authKey for metrics' deletion via /api/v1/admin/tsdb/delete_series") + maxConcurrentRequests = flag.Int("search.maxConcurrentRequests", runtime.GOMAXPROCS(-1)*2, "The maximum number of concurrent search requests. It shouldn't exceed 2*vCPUs for better performance. See also -search.maxQueueDuration") + maxQueueDuration = flag.Duration("search.maxQueueDuration", 10*time.Second, "The maximum time the request waits for execution when -search.maxConcurrentRequests limit is reached") +) + +// Init initializes vmselect +func Init() { + tmpDirPath := *vmstorage.DataPath + "/tmp" + fs.RemoveDirContents(tmpDirPath) + netstorage.InitTmpBlocksDir(tmpDirPath) + promql.InitRollupResultCache(*vmstorage.DataPath + "/cache/rollupResult") + concurrencyCh = make(chan struct{}, *maxConcurrentRequests) +} + +var concurrencyCh chan struct{} + +// Stop stops vmselect +func Stop() { + promql.StopRollupResultCache() +} + +// RequestHandler handles remote read API requests for Prometheus +func RequestHandler(w http.ResponseWriter, r *http.Request) bool { + // Limit the number of concurrent queries. + // Sleep for a second until giving up. This should resolve short bursts in requests. + t := time.NewTimer(*maxQueueDuration) + select { + case concurrencyCh <- struct{}{}: + t.Stop() + defer func() { <-concurrencyCh }() + case <-t.C: + httpserver.Errorf(w, "cannot handle more than %d concurrent requests", cap(concurrencyCh)) + return true + } + + path := strings.Replace(r.URL.Path, "//", "/", -1) + if strings.HasPrefix(path, "/api/v1/label/") { + s := r.URL.Path[len("/api/v1/label/"):] + if strings.HasSuffix(s, "/values") { + labelValuesRequests.Inc() + labelName := s[:len(s)-len("/values")] + httpserver.EnableCORS(w, r) + if err := prometheus.LabelValuesHandler(labelName, w, r); err != nil { + labelValuesErrors.Inc() + sendPrometheusError(w, r, err) + return true + } + return true + } + } + + switch path { + case "/api/v1/query": + queryRequests.Inc() + httpserver.EnableCORS(w, r) + if err := prometheus.QueryHandler(w, r); err != nil { + queryErrors.Inc() + sendPrometheusError(w, r, err) + return true + } + return true + case "/api/v1/query_range": + queryRangeRequests.Inc() + httpserver.EnableCORS(w, r) + if err := prometheus.QueryRangeHandler(w, r); err != nil { + queryRangeErrors.Inc() + sendPrometheusError(w, r, err) + return true + } + return true + case "/api/v1/series": + seriesRequests.Inc() + httpserver.EnableCORS(w, r) + if err := prometheus.SeriesHandler(w, r); err != nil { + seriesErrors.Inc() + sendPrometheusError(w, r, err) + return true + } + return true + case "/api/v1/series/count": + seriesCountRequests.Inc() + httpserver.EnableCORS(w, r) + if err := prometheus.SeriesCountHandler(w, r); err != nil { + seriesCountErrors.Inc() + sendPrometheusError(w, r, err) + return true + } + return true + case "/api/v1/labels": + labelsRequests.Inc() + httpserver.EnableCORS(w, r) + if err := prometheus.LabelsHandler(w, r); err != nil { + labelsErrors.Inc() + sendPrometheusError(w, r, err) + return true + } + return true + case "/api/v1/export": + exportRequests.Inc() + if err := prometheus.ExportHandler(w, r); err != nil { + exportErrors.Inc() + httpserver.Errorf(w, "error in %q: %s", r.URL.Path, err) + return true + } + return true + case "/federate": + federateRequests.Inc() + if err := prometheus.FederateHandler(w, r); err != nil { + federateErrors.Inc() + httpserver.Errorf(w, "error int %q: %s", r.URL.Path, err) + return true + } + return true + case "/api/v1/admin/tsdb/delete_series": + deleteRequests.Inc() + authKey := r.FormValue("authKey") + if authKey != *deleteAuthKey { + httpserver.Errorf(w, "invalid authKey %q. It must match the value from -deleteAuthKey command line flag", authKey) + return true + } + if err := prometheus.DeleteHandler(r); err != nil { + deleteErrors.Inc() + httpserver.Errorf(w, "error in %q: %s", r.URL.Path, err) + return true + } + w.WriteHeader(http.StatusNoContent) + return true + default: + return false + } +} + +func sendPrometheusError(w http.ResponseWriter, r *http.Request, err error) { + logger.Errorf("error in %q: %s", r.URL.Path, err) + + w.Header().Set("Content-Type", "application/json") + statusCode := 422 + w.WriteHeader(statusCode) + prometheus.WriteErrorResponse(w, statusCode, err) +} + +var ( + labelValuesRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/label/{}/values"}`) + labelValuesErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/label/{}/values"}`) + + queryRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/query"}`) + queryErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/query"}`) + + queryRangeRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/query_range"}`) + queryRangeErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/query_range"}`) + + seriesRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/series"}`) + seriesErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/series"}`) + + seriesCountRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/series/count"}`) + seriesCountErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/series/count"}`) + + labelsRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/labels"}`) + labelsErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/labels"}`) + + deleteRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/admin/tsdb/delete_series"}`) + deleteErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/admin/tsdb/delete_series"}`) + + exportRequests = metrics.NewCounter(`vm_http_requests_total{path="/api/v1/export"}`) + exportErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/api/v1/export"}`) + + federateRequests = metrics.NewCounter(`vm_http_requests_total{path="/federate"}`) + federateErrors = metrics.NewCounter(`vm_http_request_errors_total{path="/federate"}`) +) diff --git a/app/vmselect/netstorage/fadvise_darwin.go b/app/vmselect/netstorage/fadvise_darwin.go new file mode 100644 index 000000000..d219d232b --- /dev/null +++ b/app/vmselect/netstorage/fadvise_darwin.go @@ -0,0 +1,9 @@ +package netstorage + +import ( + "os" +) + +func mustFadviseRandomRead(f *os.File) { + // Do nothing :) +} diff --git a/app/vmselect/netstorage/fadvise_linux.go b/app/vmselect/netstorage/fadvise_linux.go new file mode 100644 index 000000000..4bbbf132a --- /dev/null +++ b/app/vmselect/netstorage/fadvise_linux.go @@ -0,0 +1,15 @@ +package netstorage + +import ( + "os" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "golang.org/x/sys/unix" +) + +func mustFadviseRandomRead(f *os.File) { + fd := int(f.Fd()) + if err := unix.Fadvise(int(fd), 0, 0, unix.FADV_RANDOM|unix.FADV_WILLNEED); err != nil { + logger.Panicf("FATAL: error returned from unix.Fadvise(RANDOM|WILLNEED): %s", err) + } +} diff --git a/app/vmselect/netstorage/netstorage.go b/app/vmselect/netstorage/netstorage.go new file mode 100644 index 000000000..f0a3cf728 --- /dev/null +++ b/app/vmselect/netstorage/netstorage.go @@ -0,0 +1,535 @@ +package netstorage + +import ( + "container/heap" + "flag" + "fmt" + "runtime" + "sort" + "sync" + "sync/atomic" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/VictoriaMetrics/metrics" +) + +var ( + maxTagKeysPerSearch = flag.Int("search.maxTagKeys", 10e3, "The maximum number of tag keys returned per search") + maxTagValuesPerSearch = flag.Int("search.maxTagValues", 10e3, "The maximum number of tag values returned per search") + maxMetricsPerSearch = flag.Int("search.maxUniqueTimeseries", 100e3, "The maximum number of unique time series each search can scan") +) + +// Result is a single timeseries result. +// +// ProcessSearchQuery returns Result slice. +type Result struct { + // The name of the metric. + MetricName storage.MetricName + + // Values are sorted by Timestamps. + Values []float64 + Timestamps []int64 + + // Marshaled MetricName. Used only for results sorting + // in app/vmselect/promql + MetricNameMarshaled []byte +} + +func (r *Result) reset() { + r.MetricName.Reset() + r.Values = r.Values[:0] + r.Timestamps = r.Timestamps[:0] + r.MetricNameMarshaled = r.MetricNameMarshaled[:0] +} + +// Results holds results returned from ProcessSearchQuery. +type Results struct { + tr storage.TimeRange + deadline Deadline + + tbf *tmpBlocksFile + + packedTimeseries []packedTimeseries +} + +// Len returns the number of results in rss. +func (rss *Results) Len() int { + return len(rss.packedTimeseries) +} + +// Cancel cancels rss work. +func (rss *Results) Cancel() { + putTmpBlocksFile(rss.tbf) + rss.tbf = nil +} + +// RunParallel runs in parallel f for all the results from rss. +// +// f shouldn't hold references to rs after returning. +// +// rss becomes unusable after the call to RunParallel. +func (rss *Results) RunParallel(f func(rs *Result)) error { + defer func() { + putTmpBlocksFile(rss.tbf) + rss.tbf = nil + }() + + workersCount := 1 + len(rss.packedTimeseries)/32 + if workersCount > gomaxprocs { + workersCount = gomaxprocs + } + if workersCount == 0 { + logger.Panicf("BUG: workersCount cannot be zero") + } + workCh := make(chan *packedTimeseries, workersCount) + doneCh := make(chan error) + + // Start workers. + for i := 0; i < workersCount; i++ { + go func() { + rs := getResult() + defer putResult(rs) + maxWorkersCount := gomaxprocs / workersCount + + var err error + for pts := range workCh { + if time.Until(rss.deadline.Deadline) < 0 { + err = fmt.Errorf("timeout exceeded during query execution: %s", rss.deadline.Timeout) + break + } + if err = pts.Unpack(rss.tbf, rs, rss.tr, maxWorkersCount); err != nil { + break + } + if len(rs.Timestamps) == 0 { + // Skip empty blocks. + continue + } + f(rs) + } + // Drain the remaining work + for range workCh { + } + doneCh <- err + }() + } + + // Feed workers with work. + for i := range rss.packedTimeseries { + workCh <- &rss.packedTimeseries[i] + } + rss.packedTimeseries = rss.packedTimeseries[:0] + close(workCh) + + // Wait until workers finish. + var errors []error + for i := 0; i < workersCount; i++ { + if err := <-doneCh; err != nil { + errors = append(errors, err) + } + } + if len(errors) > 0 { + // Return just the first error, since other errors + // is likely duplicate the first error. + return errors[0] + } + return nil +} + +var gomaxprocs = runtime.GOMAXPROCS(-1) + +type packedTimeseries struct { + metricName string + addrs []tmpBlockAddr +} + +// Unpack unpacks pts to dst. +func (pts *packedTimeseries) Unpack(tbf *tmpBlocksFile, dst *Result, tr storage.TimeRange, maxWorkersCount int) error { + dst.reset() + + if err := dst.MetricName.Unmarshal(bytesutil.ToUnsafeBytes(pts.metricName)); err != nil { + return fmt.Errorf("cannot unmarshal metricName %q: %s", pts.metricName, err) + } + + workersCount := 1 + len(pts.addrs)/32 + if workersCount > maxWorkersCount { + workersCount = maxWorkersCount + } + if workersCount == 0 { + logger.Panicf("BUG: workersCount cannot be zero") + } + + sbs := make([]*sortBlock, 0, len(pts.addrs)) + var sbsLock sync.Mutex + + workCh := make(chan tmpBlockAddr, workersCount) + doneCh := make(chan error) + + // Start workers + for i := 0; i < workersCount; i++ { + go func() { + var err error + for addr := range workCh { + sb := getSortBlock() + if err = sb.unpackFrom(tbf, addr, tr); err != nil { + break + } + + sbsLock.Lock() + sbs = append(sbs, sb) + sbsLock.Unlock() + } + + // Drain the remaining work + for range workCh { + } + doneCh <- err + }() + } + + // Feed workers with work + for _, addr := range pts.addrs { + workCh <- addr + } + pts.addrs = pts.addrs[:0] + close(workCh) + + // Wait until workers finish + var errors []error + for i := 0; i < workersCount; i++ { + if err := <-doneCh; err != nil { + errors = append(errors, err) + } + } + if len(errors) > 0 { + // Return the first error only, since other errors are likely the same. + return errors[0] + } + + // Merge blocks + mergeSortBlocks(dst, sbs) + return nil +} + +func getSortBlock() *sortBlock { + v := sbPool.Get() + if v == nil { + return &sortBlock{} + } + return v.(*sortBlock) +} + +func putSortBlock(sb *sortBlock) { + sb.reset() + sbPool.Put(sb) +} + +var sbPool sync.Pool + +var metricRowsSkipped = metrics.NewCounter(`vm_metric_rows_skipped_total{name="vmselect"}`) + +func mergeSortBlocks(dst *Result, sbh sortBlocksHeap) { + // Skip empty sort blocks, since they cannot be passed to heap.Init. + src := sbh + sbh = sbh[:0] + for _, sb := range src { + if len(sb.Timestamps) == 0 { + putSortBlock(sb) + continue + } + sbh = append(sbh, sb) + } + if len(sbh) == 0 { + return + } + heap.Init(&sbh) + for { + top := sbh[0] + heap.Pop(&sbh) + if len(sbh) == 0 { + dst.Timestamps = append(dst.Timestamps, top.Timestamps[top.NextIdx:]...) + dst.Values = append(dst.Values, top.Values[top.NextIdx:]...) + putSortBlock(top) + return + } + sbNext := sbh[0] + tsNext := sbNext.Timestamps[sbNext.NextIdx] + idxNext := len(top.Timestamps) + if top.Timestamps[idxNext-1] > tsNext { + idxNext = top.NextIdx + for top.Timestamps[idxNext] <= tsNext { + idxNext++ + } + } + dst.Timestamps = append(dst.Timestamps, top.Timestamps[top.NextIdx:idxNext]...) + dst.Values = append(dst.Values, top.Values[top.NextIdx:idxNext]...) + if idxNext < len(top.Timestamps) { + top.NextIdx = idxNext + heap.Push(&sbh, top) + } else { + // Return top to the pool. + putSortBlock(top) + } + } +} + +type sortBlock struct { + // b is used as a temporary storage for unpacked rows before they + // go to Timestamps and Values. + b storage.Block + + Timestamps []int64 + Values []float64 + NextIdx int +} + +func (sb *sortBlock) reset() { + sb.b.Reset() + sb.Timestamps = sb.Timestamps[:0] + sb.Values = sb.Values[:0] + sb.NextIdx = 0 +} + +func (sb *sortBlock) unpackFrom(tbf *tmpBlocksFile, addr tmpBlockAddr, tr storage.TimeRange) error { + tbf.MustReadBlockAt(&sb.b, addr) + if err := sb.b.UnmarshalData(); err != nil { + return fmt.Errorf("cannot unmarshal block: %s", err) + } + timestamps := sb.b.Timestamps() + + // Skip timestamps smaller than tr.MinTimestamp. + i := 0 + for i < len(timestamps) && timestamps[i] < tr.MinTimestamp { + i++ + } + + // Skip timestamps bigger than tr.MaxTimestamp. + j := len(timestamps) + for j > i && timestamps[j-1] > tr.MaxTimestamp { + j-- + } + skippedRows := sb.b.RowsCount() - (j - i) + metricRowsSkipped.Add(skippedRows) + + // Copy the remaining values. + if i == j { + return nil + } + values := sb.b.Values() + sb.Timestamps = append(sb.Timestamps, timestamps[i:j]...) + sb.Values = decimal.AppendDecimalToFloat(sb.Values, values[i:j], sb.b.Scale()) + return nil +} + +type sortBlocksHeap []*sortBlock + +func (sbh sortBlocksHeap) Len() int { + return len(sbh) +} + +func (sbh sortBlocksHeap) Less(i, j int) bool { + a := sbh[i] + b := sbh[j] + return a.Timestamps[a.NextIdx] < b.Timestamps[b.NextIdx] +} + +func (sbh sortBlocksHeap) Swap(i, j int) { + sbh[i], sbh[j] = sbh[j], sbh[i] +} + +func (sbh *sortBlocksHeap) Push(x interface{}) { + *sbh = append(*sbh, x.(*sortBlock)) +} + +func (sbh *sortBlocksHeap) Pop() interface{} { + a := *sbh + v := a[len(a)-1] + *sbh = a[:len(a)-1] + return v +} + +// DeleteSeries deletes time series matching the given tagFilterss. +func DeleteSeries(sq *storage.SearchQuery) (int, error) { + tfss, err := setupTfss(sq.TagFilterss) + if err != nil { + return 0, err + } + return vmstorage.DeleteMetrics(tfss) +} + +// GetLabels returns labels until the given deadline. +func GetLabels(deadline Deadline) ([]string, error) { + labels, err := vmstorage.SearchTagKeys(*maxTagKeysPerSearch) + if err != nil { + return nil, fmt.Errorf("error during labels search: %s", err) + } + + // Substitute "" with "__name__" + for i := range labels { + if labels[i] == "" { + labels[i] = "__name__" + } + } + + // Sort labels like Prometheus does + sort.Strings(labels) + + return labels, nil +} + +// GetLabelValues returns label values for the given labelName +// until the given deadline. +func GetLabelValues(labelName string, deadline Deadline) ([]string, error) { + if labelName == "__name__" { + labelName = "" + } + + // Search for tag values + labelValues, err := vmstorage.SearchTagValues([]byte(labelName), *maxTagValuesPerSearch) + if err != nil { + return nil, fmt.Errorf("error during label values search for labelName=%q: %s", labelName, err) + } + + // Sort labelValues like Prometheus does + sort.Strings(labelValues) + + return labelValues, nil +} + +// GetSeriesCount returns the number of unique series. +func GetSeriesCount(deadline Deadline) (uint64, error) { + n, err := vmstorage.GetSeriesCount() + if err != nil { + return 0, fmt.Errorf("error during series count request: %s", err) + } + return n, nil +} + +func getStorageSearch() *storage.Search { + v := ssPool.Get() + if v == nil { + return &storage.Search{} + } + return v.(*storage.Search) +} + +func putStorageSearch(sr *storage.Search) { + n := atomic.LoadUint64(&sr.MissingMetricNamesForMetricID) + missingMetricNamesForMetricID.Add(int(n)) + sr.MustClose() + ssPool.Put(sr) +} + +var ssPool sync.Pool + +var missingMetricNamesForMetricID = metrics.NewCounter(`vm_missing_metric_names_for_metric_id_total`) + +// ProcessSearchQuery performs sq on storage nodes until the given deadline. +func ProcessSearchQuery(sq *storage.SearchQuery, deadline Deadline) (*Results, error) { + // Setup search. + tfss, err := setupTfss(sq.TagFilterss) + if err != nil { + return nil, err + } + tr := storage.TimeRange{ + MinTimestamp: sq.MinTimestamp, + MaxTimestamp: sq.MaxTimestamp, + } + + vmstorage.WG.Add(1) + defer vmstorage.WG.Done() + + sr := getStorageSearch() + defer putStorageSearch(sr) + sr.Init(vmstorage.Storage, tfss, tr, *maxMetricsPerSearch) + + tbf := getTmpBlocksFile() + m := make(map[string][]tmpBlockAddr) + for sr.NextMetricBlock() { + addr, err := tbf.WriteBlock(sr.MetricBlock.Block) + if err != nil { + putTmpBlocksFile(tbf) + return nil, fmt.Errorf("cannot write data to temporary blocks file: %s", err) + } + if time.Until(deadline.Deadline) < 0 { + putTmpBlocksFile(tbf) + return nil, fmt.Errorf("timeout exceeded while fetching data from storage: %s", deadline.Timeout) + } + metricName := sr.MetricBlock.MetricName + m[string(metricName)] = append(m[string(metricName)], addr) + } + if err := sr.Error(); err != nil { + putTmpBlocksFile(tbf) + return nil, fmt.Errorf("search error: %s", err) + } + if err := tbf.Finalize(); err != nil { + putTmpBlocksFile(tbf) + return nil, fmt.Errorf("cannot finalize temporary blocks file: %s", err) + } + + var rss Results + rss.packedTimeseries = make([]packedTimeseries, len(m)) + rss.tr = tr + rss.deadline = deadline + rss.tbf = tbf + i := 0 + for metricName, addrs := range m { + pts := &rss.packedTimeseries[i] + i++ + pts.metricName = metricName + pts.addrs = addrs + } + return &rss, nil +} + +func getResult() *Result { + v := rsPool.Get() + if v == nil { + return &Result{} + } + return v.(*Result) +} + +func putResult(rs *Result) { + if len(rs.Values) > 8192 { + // Do not pool big results, since they may occupy too much memory. + return + } + rs.reset() + rsPool.Put(rs) +} + +var rsPool sync.Pool + +func setupTfss(tagFilterss [][]storage.TagFilter) ([]*storage.TagFilters, error) { + tfss := make([]*storage.TagFilters, 0, len(tagFilterss)) + for _, tagFilters := range tagFilterss { + tfs := storage.NewTagFilters() + for i := range tagFilters { + tf := &tagFilters[i] + if err := tfs.Add(tf.Key, tf.Value, tf.IsNegative, tf.IsRegexp); err != nil { + return nil, fmt.Errorf("cannot parse tag filter %s: %s", tf, err) + } + } + tfss = append(tfss, tfs) + } + return tfss, nil +} + +// Deadline contains deadline with the corresponding timeout for pretty error messages. +type Deadline struct { + Deadline time.Time + Timeout time.Duration +} + +// NewDeadline returns deadline for the given timeout. +func NewDeadline(timeout time.Duration) Deadline { + return Deadline{ + Deadline: time.Now().Add(timeout), + Timeout: timeout, + } +} diff --git a/app/vmselect/netstorage/tmp_blocks_file.go b/app/vmselect/netstorage/tmp_blocks_file.go new file mode 100644 index 000000000..5a1153f6b --- /dev/null +++ b/app/vmselect/netstorage/tmp_blocks_file.go @@ -0,0 +1,188 @@ +package netstorage + +import ( + "bufio" + "fmt" + "io/ioutil" + "os" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/VictoriaMetrics/metrics" +) + +// InitTmpBlocksDir initializes directory to store temporary search results. +// +// It stores data in system-defined temporary directory if tmpDirPath is empty. +func InitTmpBlocksDir(tmpDirPath string) { + if len(tmpDirPath) == 0 { + tmpDirPath = os.TempDir() + } + tmpBlocksDir = tmpDirPath + "/searchResults" + if err := os.RemoveAll(tmpBlocksDir); err != nil { + logger.Panicf("FATAL: cannot remove %q: %s", tmpBlocksDir, err) + } + if err := fs.MkdirAllIfNotExist(tmpBlocksDir); err != nil { + logger.Panicf("FATAL: cannot create %q: %s", tmpBlocksDir, err) + } +} + +var tmpBlocksDir string + +const maxInmemoryTmpBlocksFile = 512 * 1024 + +type tmpBlocksFile struct { + buf []byte + + f *os.File + bw *bufio.Writer + + offset uint64 +} + +func getTmpBlocksFile() *tmpBlocksFile { + v := tmpBlocksFilePool.Get() + if v == nil { + return &tmpBlocksFile{} + } + return v.(*tmpBlocksFile) +} + +func putTmpBlocksFile(tbf *tmpBlocksFile) { + tbf.MustClose() + tbf.buf = tbf.buf[:0] + tbf.f = nil + tbf.bw = nil + tbf.offset = 0 + tmpBlocksFilePool.Put(tbf) +} + +var tmpBlocksFilePool sync.Pool + +type tmpBlockAddr struct { + offset uint64 + size int +} + +func (addr tmpBlockAddr) String() string { + return fmt.Sprintf("offset %d, size %d", addr.offset, addr.size) +} + +func getBufioWriter(f *os.File) *bufio.Writer { + v := bufioWriterPool.Get() + if v == nil { + return bufio.NewWriterSize(f, maxInmemoryTmpBlocksFile*2) + } + bw := v.(*bufio.Writer) + bw.Reset(f) + return bw +} + +func putBufioWriter(bw *bufio.Writer) { + bufioWriterPool.Put(bw) +} + +var bufioWriterPool sync.Pool + +var tmpBlocksFilesCreated = metrics.NewCounter(`vm_tmp_blocks_files_created_total`) + +// WriteBlock writes b to tbf. +// +// It returns errors since the operation may fail on space shortage +// and this must be handled. +func (tbf *tmpBlocksFile) WriteBlock(b *storage.Block) (tmpBlockAddr, error) { + var addr tmpBlockAddr + addr.offset = tbf.offset + + tbfBufLen := len(tbf.buf) + tbf.buf = storage.MarshalBlock(tbf.buf, b) + addr.size = len(tbf.buf) - tbfBufLen + tbf.offset += uint64(addr.size) + if tbf.offset <= maxInmemoryTmpBlocksFile { + return addr, nil + } + + if tbf.f == nil { + f, err := ioutil.TempFile(tmpBlocksDir, "") + if err != nil { + return addr, err + } + tbf.f = f + tbf.bw = getBufioWriter(f) + tmpBlocksFilesCreated.Inc() + } + _, err := tbf.bw.Write(tbf.buf) + tbf.buf = tbf.buf[:0] + if err != nil { + return addr, fmt.Errorf("cannot write block to %q: %s", tbf.f.Name(), err) + } + return addr, nil +} + +func (tbf *tmpBlocksFile) Finalize() error { + if tbf.f == nil { + return nil + } + + err := tbf.bw.Flush() + putBufioWriter(tbf.bw) + tbf.bw = nil + if _, err := tbf.f.Seek(0, 0); err != nil { + logger.Panicf("FATAL: cannot seek to the start of file: %s", err) + } + mustFadviseRandomRead(tbf.f) + return err +} + +func (tbf *tmpBlocksFile) MustReadBlockAt(dst *storage.Block, addr tmpBlockAddr) { + var buf []byte + if tbf.f == nil { + buf = tbf.buf[addr.offset : addr.offset+uint64(addr.size)] + } else { + bb := tmpBufPool.Get() + defer tmpBufPool.Put(bb) + bb.B = bytesutil.Resize(bb.B, addr.size) + n, err := tbf.f.ReadAt(bb.B, int64(addr.offset)) + if err != nil { + logger.Panicf("FATAL: cannot read from %q at %s: %s", tbf.f.Name(), addr, err) + } + if n != len(bb.B) { + logger.Panicf("FATAL: too short number of bytes read at %s; got %d; want %d", addr, n, len(bb.B)) + } + buf = bb.B + } + tail, err := storage.UnmarshalBlock(dst, buf) + if err != nil { + logger.Panicf("FATAL: cannot unmarshal data at %s: %s", addr, err) + } + if len(tail) > 0 { + logger.Panicf("FATAL: unexpected non-empty tail left after unmarshaling data at %s; len(tail)=%d", addr, len(tail)) + } +} + +var tmpBufPool bytesutil.ByteBufferPool + +func (tbf *tmpBlocksFile) MustClose() { + if tbf.f == nil { + return + } + if tbf.bw != nil { + putBufioWriter(tbf.bw) + tbf.bw = nil + } + fname := tbf.f.Name() + + // Remove the file at first, then close it. + // This way the OS shouldn't try to flush file contents to storage + // on close. + if err := os.Remove(fname); err != nil { + logger.Panicf("FATAL: cannot remove %q: %s", fname, err) + } + if err := tbf.f.Close(); err != nil { + logger.Panicf("FATAL: cannot close %q: %s", fname, err) + } + tbf.f = nil +} diff --git a/app/vmselect/netstorage/tmp_blocks_file_test.go b/app/vmselect/netstorage/tmp_blocks_file_test.go new file mode 100644 index 000000000..f31f1952c --- /dev/null +++ b/app/vmselect/netstorage/tmp_blocks_file_test.go @@ -0,0 +1,150 @@ +package netstorage + +import ( + "fmt" + "math/rand" + "os" + "reflect" + "testing" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +func TestMain(m *testing.M) { + rand.Seed(time.Now().UnixNano()) + tmpDir := "TestTmpBlocks" + InitTmpBlocksDir(tmpDir) + statusCode := m.Run() + if err := os.RemoveAll(tmpDir); err != nil { + logger.Panicf("cannot remove %q: %s", tmpDir, err) + } + os.Exit(statusCode) +} + +func TestTmpBlocksFileSerial(t *testing.T) { + if err := testTmpBlocksFile(); err != nil { + t.Fatalf("unexpected error: %s", err) + } +} + +func TestTmpBlocksFileConcurrent(t *testing.T) { + concurrency := 4 + ch := make(chan error, concurrency) + for i := 0; i < concurrency; i++ { + go func() { + ch <- testTmpBlocksFile() + }() + } + for i := 0; i < concurrency; i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(30 * time.Second): + t.Fatalf("timeout") + } + } +} + +func testTmpBlocksFile() error { + createBlock := func() *storage.Block { + rowsCount := rand.Intn(8000) + 1 + var timestamps, values []int64 + ts := int64(rand.Intn(1023434)) + for i := 0; i < rowsCount; i++ { + ts += int64(rand.Intn(1000) + 1) + timestamps = append(timestamps, ts) + values = append(values, int64(i*i+rand.Intn(20))) + } + tsid := &storage.TSID{ + MetricID: 234211, + } + scale := int16(rand.Intn(123)) + precisionBits := uint8(rand.Intn(63) + 1) + var b storage.Block + b.Init(tsid, timestamps, values, scale, precisionBits) + _, _, _ = b.MarshalData(0, 0) + return &b + } + for _, size := range []int{1024, 16 * 1024, maxInmemoryTmpBlocksFile / 2, 2 * maxInmemoryTmpBlocksFile} { + err := func() error { + tbf := getTmpBlocksFile() + defer putTmpBlocksFile(tbf) + + // Write blocks until their summary size exceeds `size`. + var addrs []tmpBlockAddr + var blocks []*storage.Block + for tbf.offset < uint64(size) { + b := createBlock() + addr, err := tbf.WriteBlock(b) + if err != nil { + return fmt.Errorf("cannot write block at offset %d: %s", tbf.offset, err) + } + if addr.offset+uint64(addr.size) != tbf.offset { + return fmt.Errorf("unexpected addr=%+v for offset %v", &addr, tbf.offset) + } + addrs = append(addrs, addr) + blocks = append(blocks, b) + } + if err := tbf.Finalize(); err != nil { + return fmt.Errorf("cannot finalize tbf: %s", err) + } + + // Read blocks in parallel and verify them + concurrency := 3 + workCh := make(chan int) + doneCh := make(chan error) + for i := 0; i < concurrency; i++ { + go func() { + doneCh <- func() error { + var b1 storage.Block + for idx := range workCh { + addr := addrs[idx] + b := blocks[idx] + if err := b.UnmarshalData(); err != nil { + return fmt.Errorf("cannot unmarshal data from the original block: %s", err) + } + b1.Reset() + tbf.MustReadBlockAt(&b1, addr) + if err := b1.UnmarshalData(); err != nil { + return fmt.Errorf("cannot unmarshal data from tbf: %s", err) + } + if b1.RowsCount() != b.RowsCount() { + return fmt.Errorf("unexpected number of rows in tbf block; got %d; want %d", b1.RowsCount(), b.RowsCount()) + } + if !reflect.DeepEqual(b1.Timestamps(), b.Timestamps()) { + return fmt.Errorf("unexpected timestamps; got\n%v\nwant\n%v", b1.Timestamps(), b.Timestamps()) + } + if !reflect.DeepEqual(b1.Values(), b.Values()) { + return fmt.Errorf("unexpected values; got\n%v\nwant\n%v", b1.Values(), b.Values()) + } + } + return nil + }() + }() + } + for i := range addrs { + workCh <- i + } + close(workCh) + for i := 0; i < concurrency; i++ { + select { + case err := <-doneCh: + if err != nil { + return err + } + case <-time.After(time.Second): + return fmt.Errorf("timeout") + } + } + return nil + }() + if err != nil { + return err + } + } + return nil +} diff --git a/app/vmselect/prometheus/error_response.qtpl b/app/vmselect/prometheus/error_response.qtpl new file mode 100644 index 000000000..c56facf9d --- /dev/null +++ b/app/vmselect/prometheus/error_response.qtpl @@ -0,0 +1,11 @@ +{% stripspace %} +ErrorResponse generates error response for /api/v1/query. +See https://prometheus.io/docs/prometheus/latest/querying/api/#format-overview +{% func ErrorResponse(statusCode int, err error) %} +{ + "status":"error", + "errorType":"{%d statusCode %}", + "error": {%q= err.Error() %} +} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/error_response.qtpl.go b/app/vmselect/prometheus/error_response.qtpl.go new file mode 100644 index 000000000..c6ecb80c6 --- /dev/null +++ b/app/vmselect/prometheus/error_response.qtpl.go @@ -0,0 +1,61 @@ +// Code generated by qtc from "error_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +// ErrorResponse generates error response for /api/v1/query.See https://prometheus.io/docs/prometheus/latest/querying/api/#format-overview + +//line app/vmselect/prometheus/error_response.qtpl:4 +package prometheus + +//line app/vmselect/prometheus/error_response.qtpl:4 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/error_response.qtpl:4 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/error_response.qtpl:4 +func StreamErrorResponse(qw422016 *qt422016.Writer, statusCode int, err error) { +//line app/vmselect/prometheus/error_response.qtpl:4 + qw422016.N().S(`{"status":"error","errorType":"`) +//line app/vmselect/prometheus/error_response.qtpl:7 + qw422016.N().D(statusCode) +//line app/vmselect/prometheus/error_response.qtpl:7 + qw422016.N().S(`","error":`) +//line app/vmselect/prometheus/error_response.qtpl:8 + qw422016.N().Q(err.Error()) +//line app/vmselect/prometheus/error_response.qtpl:8 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/error_response.qtpl:10 +} + +//line app/vmselect/prometheus/error_response.qtpl:10 +func WriteErrorResponse(qq422016 qtio422016.Writer, statusCode int, err error) { +//line app/vmselect/prometheus/error_response.qtpl:10 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/error_response.qtpl:10 + StreamErrorResponse(qw422016, statusCode, err) +//line app/vmselect/prometheus/error_response.qtpl:10 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/error_response.qtpl:10 +} + +//line app/vmselect/prometheus/error_response.qtpl:10 +func ErrorResponse(statusCode int, err error) string { +//line app/vmselect/prometheus/error_response.qtpl:10 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/error_response.qtpl:10 + WriteErrorResponse(qb422016, statusCode, err) +//line app/vmselect/prometheus/error_response.qtpl:10 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/error_response.qtpl:10 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/error_response.qtpl:10 + return qs422016 +//line app/vmselect/prometheus/error_response.qtpl:10 +} diff --git a/app/vmselect/prometheus/export.qtpl b/app/vmselect/prometheus/export.qtpl new file mode 100644 index 000000000..df38d7164 --- /dev/null +++ b/app/vmselect/prometheus/export.qtpl @@ -0,0 +1,96 @@ +{% import ( + "github.com/valyala/quicktemplate" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) %} + +{% stripspace %} + +{% func ExportPrometheusLine(rs *netstorage.Result) %} + {% if len(rs.Timestamps) == 0 %}{% return %}{% endif %} + {% code bb := quicktemplate.AcquireByteBuffer() %} + {% code writeprometheusMetricName(bb, &rs.MetricName) %} + {% for i, ts := range rs.Timestamps %} + {%z= bb.B %}{% space %} + {%f= rs.Values[i] %}{% space %} + {%d= int(ts) %}{% newline %} + {% endfor %} + {% code quicktemplate.ReleaseByteBuffer(bb) %} +{% endfunc %} + +{% func ExportJSONLine(rs *netstorage.Result) %} + {% if len(rs.Timestamps) == 0 %}{% return %}{% endif %} + { + "metric":{%= metricNameObject(&rs.MetricName) %}, + "values":[ + {% if len(rs.Values) > 0 %} + {% code values := rs.Values %} + {%f= values[0] %} + {% code values = values[1:] %} + {% for _, v := range values %} + ,{%f= v %} + {% endfor %} + {% endif %} + ], + "timestamps":[ + {% if len(rs.Timestamps) > 0 %} + {% code timestamps := rs.Timestamps %} + {%d= int(timestamps[0]) %} + {% code timestamps = timestamps[1:] %} + {% for _, ts := range timestamps %} + ,{%d= int(ts) %} + {% endfor %} + {% endif %} + ] + }{% newline %} +{% endfunc %} + +{% func ExportPromAPILine(rs *netstorage.Result) %} +{ + "metric": {%= metricNameObject(&rs.MetricName) %}, + "values": {%= valuesWithTimestamps(rs.Values, rs.Timestamps) %} +} +{% endfunc %} + +{% func ExportPromAPIResponse(resultsCh <-chan *quicktemplate.ByteBuffer) %} +{ + "status":"success", + "data":{ + "resultType":"matrix", + "result":[ + {% code bb, ok := <-resultsCh %} + {% if ok %} + {%z= bb.B %} + {% code quicktemplate.ReleaseByteBuffer(bb) %} + {% for bb := range resultsCh %} + ,{%z= bb.B %} + {% code quicktemplate.ReleaseByteBuffer(bb) %} + {% endfor %} + {% endif %} + ] + } +} +{% endfunc %} + +{% func ExportStdResponse(resultsCh <-chan *quicktemplate.ByteBuffer) %} + {% for bb := range resultsCh %} + {%z= bb.B %} + {% code quicktemplate.ReleaseByteBuffer(bb) %} + {% endfor %} +{% endfunc %} + +{% func prometheusMetricName(mn *storage.MetricName) %} + {%z= mn.MetricGroup %} + {% if len(mn.Tags) > 0 %} + { + {% code tags := mn.Tags %} + {%z= tags[0].Key %}={%qz= tags[0].Value %} + {% code tags = tags[1:] %} + {% for i := range tags %} + {% code tag := &tags[i] %} + ,{%z= tag.Key %}={%qz= tag.Value %} + {% endfor %} + } + {% endif %} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/export.qtpl.go b/app/vmselect/prometheus/export.qtpl.go new file mode 100644 index 000000000..755d8084d --- /dev/null +++ b/app/vmselect/prometheus/export.qtpl.go @@ -0,0 +1,385 @@ +// Code generated by qtc from "export.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line app/vmselect/prometheus/export.qtpl:1 +package prometheus + +//line app/vmselect/prometheus/export.qtpl:1 +import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/export.qtpl:9 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/export.qtpl:9 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/export.qtpl:9 +func StreamExportPrometheusLine(qw422016 *qt422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/export.qtpl:10 + if len(rs.Timestamps) == 0 { +//line app/vmselect/prometheus/export.qtpl:10 + return +//line app/vmselect/prometheus/export.qtpl:10 + } +//line app/vmselect/prometheus/export.qtpl:11 + bb := quicktemplate.AcquireByteBuffer() + +//line app/vmselect/prometheus/export.qtpl:12 + writeprometheusMetricName(bb, &rs.MetricName) + +//line app/vmselect/prometheus/export.qtpl:13 + for i, ts := range rs.Timestamps { +//line app/vmselect/prometheus/export.qtpl:14 + qw422016.N().Z(bb.B) +//line app/vmselect/prometheus/export.qtpl:14 + qw422016.N().S(` `) +//line app/vmselect/prometheus/export.qtpl:15 + qw422016.N().F(rs.Values[i]) +//line app/vmselect/prometheus/export.qtpl:15 + qw422016.N().S(` `) +//line app/vmselect/prometheus/export.qtpl:16 + qw422016.N().D(int(ts)) +//line app/vmselect/prometheus/export.qtpl:16 + qw422016.N().S(` +`) +//line app/vmselect/prometheus/export.qtpl:17 + } +//line app/vmselect/prometheus/export.qtpl:18 + quicktemplate.ReleaseByteBuffer(bb) + +//line app/vmselect/prometheus/export.qtpl:19 +} + +//line app/vmselect/prometheus/export.qtpl:19 +func WriteExportPrometheusLine(qq422016 qtio422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/export.qtpl:19 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/export.qtpl:19 + StreamExportPrometheusLine(qw422016, rs) +//line app/vmselect/prometheus/export.qtpl:19 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/export.qtpl:19 +} + +//line app/vmselect/prometheus/export.qtpl:19 +func ExportPrometheusLine(rs *netstorage.Result) string { +//line app/vmselect/prometheus/export.qtpl:19 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/export.qtpl:19 + WriteExportPrometheusLine(qb422016, rs) +//line app/vmselect/prometheus/export.qtpl:19 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/export.qtpl:19 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/export.qtpl:19 + return qs422016 +//line app/vmselect/prometheus/export.qtpl:19 +} + +//line app/vmselect/prometheus/export.qtpl:21 +func StreamExportJSONLine(qw422016 *qt422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/export.qtpl:22 + if len(rs.Timestamps) == 0 { +//line app/vmselect/prometheus/export.qtpl:22 + return +//line app/vmselect/prometheus/export.qtpl:22 + } +//line app/vmselect/prometheus/export.qtpl:22 + qw422016.N().S(`{"metric":`) +//line app/vmselect/prometheus/export.qtpl:24 + streammetricNameObject(qw422016, &rs.MetricName) +//line app/vmselect/prometheus/export.qtpl:24 + qw422016.N().S(`,"values":[`) +//line app/vmselect/prometheus/export.qtpl:26 + if len(rs.Values) > 0 { +//line app/vmselect/prometheus/export.qtpl:27 + values := rs.Values + +//line app/vmselect/prometheus/export.qtpl:28 + qw422016.N().F(values[0]) +//line app/vmselect/prometheus/export.qtpl:29 + values = values[1:] + +//line app/vmselect/prometheus/export.qtpl:30 + for _, v := range values { +//line app/vmselect/prometheus/export.qtpl:30 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/export.qtpl:31 + qw422016.N().F(v) +//line app/vmselect/prometheus/export.qtpl:32 + } +//line app/vmselect/prometheus/export.qtpl:33 + } +//line app/vmselect/prometheus/export.qtpl:33 + qw422016.N().S(`],"timestamps":[`) +//line app/vmselect/prometheus/export.qtpl:36 + if len(rs.Timestamps) > 0 { +//line app/vmselect/prometheus/export.qtpl:37 + timestamps := rs.Timestamps + +//line app/vmselect/prometheus/export.qtpl:38 + qw422016.N().D(int(timestamps[0])) +//line app/vmselect/prometheus/export.qtpl:39 + timestamps = timestamps[1:] + +//line app/vmselect/prometheus/export.qtpl:40 + for _, ts := range timestamps { +//line app/vmselect/prometheus/export.qtpl:40 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/export.qtpl:41 + qw422016.N().D(int(ts)) +//line app/vmselect/prometheus/export.qtpl:42 + } +//line app/vmselect/prometheus/export.qtpl:43 + } +//line app/vmselect/prometheus/export.qtpl:43 + qw422016.N().S(`]}`) +//line app/vmselect/prometheus/export.qtpl:45 + qw422016.N().S(` +`) +//line app/vmselect/prometheus/export.qtpl:46 +} + +//line app/vmselect/prometheus/export.qtpl:46 +func WriteExportJSONLine(qq422016 qtio422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/export.qtpl:46 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/export.qtpl:46 + StreamExportJSONLine(qw422016, rs) +//line app/vmselect/prometheus/export.qtpl:46 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/export.qtpl:46 +} + +//line app/vmselect/prometheus/export.qtpl:46 +func ExportJSONLine(rs *netstorage.Result) string { +//line app/vmselect/prometheus/export.qtpl:46 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/export.qtpl:46 + WriteExportJSONLine(qb422016, rs) +//line app/vmselect/prometheus/export.qtpl:46 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/export.qtpl:46 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/export.qtpl:46 + return qs422016 +//line app/vmselect/prometheus/export.qtpl:46 +} + +//line app/vmselect/prometheus/export.qtpl:48 +func StreamExportPromAPILine(qw422016 *qt422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/export.qtpl:48 + qw422016.N().S(`{"metric":`) +//line app/vmselect/prometheus/export.qtpl:50 + streammetricNameObject(qw422016, &rs.MetricName) +//line app/vmselect/prometheus/export.qtpl:50 + qw422016.N().S(`,"values":`) +//line app/vmselect/prometheus/export.qtpl:51 + streamvaluesWithTimestamps(qw422016, rs.Values, rs.Timestamps) +//line app/vmselect/prometheus/export.qtpl:51 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/export.qtpl:53 +} + +//line app/vmselect/prometheus/export.qtpl:53 +func WriteExportPromAPILine(qq422016 qtio422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/export.qtpl:53 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/export.qtpl:53 + StreamExportPromAPILine(qw422016, rs) +//line app/vmselect/prometheus/export.qtpl:53 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/export.qtpl:53 +} + +//line app/vmselect/prometheus/export.qtpl:53 +func ExportPromAPILine(rs *netstorage.Result) string { +//line app/vmselect/prometheus/export.qtpl:53 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/export.qtpl:53 + WriteExportPromAPILine(qb422016, rs) +//line app/vmselect/prometheus/export.qtpl:53 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/export.qtpl:53 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/export.qtpl:53 + return qs422016 +//line app/vmselect/prometheus/export.qtpl:53 +} + +//line app/vmselect/prometheus/export.qtpl:55 +func StreamExportPromAPIResponse(qw422016 *qt422016.Writer, resultsCh <-chan *quicktemplate.ByteBuffer) { +//line app/vmselect/prometheus/export.qtpl:55 + qw422016.N().S(`{"status":"success","data":{"resultType":"matrix","result":[`) +//line app/vmselect/prometheus/export.qtpl:61 + bb, ok := <-resultsCh + +//line app/vmselect/prometheus/export.qtpl:62 + if ok { +//line app/vmselect/prometheus/export.qtpl:63 + qw422016.N().Z(bb.B) +//line app/vmselect/prometheus/export.qtpl:64 + quicktemplate.ReleaseByteBuffer(bb) + +//line app/vmselect/prometheus/export.qtpl:65 + for bb := range resultsCh { +//line app/vmselect/prometheus/export.qtpl:65 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/export.qtpl:66 + qw422016.N().Z(bb.B) +//line app/vmselect/prometheus/export.qtpl:67 + quicktemplate.ReleaseByteBuffer(bb) + +//line app/vmselect/prometheus/export.qtpl:68 + } +//line app/vmselect/prometheus/export.qtpl:69 + } +//line app/vmselect/prometheus/export.qtpl:69 + qw422016.N().S(`]}}`) +//line app/vmselect/prometheus/export.qtpl:73 +} + +//line app/vmselect/prometheus/export.qtpl:73 +func WriteExportPromAPIResponse(qq422016 qtio422016.Writer, resultsCh <-chan *quicktemplate.ByteBuffer) { +//line app/vmselect/prometheus/export.qtpl:73 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/export.qtpl:73 + StreamExportPromAPIResponse(qw422016, resultsCh) +//line app/vmselect/prometheus/export.qtpl:73 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/export.qtpl:73 +} + +//line app/vmselect/prometheus/export.qtpl:73 +func ExportPromAPIResponse(resultsCh <-chan *quicktemplate.ByteBuffer) string { +//line app/vmselect/prometheus/export.qtpl:73 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/export.qtpl:73 + WriteExportPromAPIResponse(qb422016, resultsCh) +//line app/vmselect/prometheus/export.qtpl:73 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/export.qtpl:73 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/export.qtpl:73 + return qs422016 +//line app/vmselect/prometheus/export.qtpl:73 +} + +//line app/vmselect/prometheus/export.qtpl:75 +func StreamExportStdResponse(qw422016 *qt422016.Writer, resultsCh <-chan *quicktemplate.ByteBuffer) { +//line app/vmselect/prometheus/export.qtpl:76 + for bb := range resultsCh { +//line app/vmselect/prometheus/export.qtpl:77 + qw422016.N().Z(bb.B) +//line app/vmselect/prometheus/export.qtpl:78 + quicktemplate.ReleaseByteBuffer(bb) + +//line app/vmselect/prometheus/export.qtpl:79 + } +//line app/vmselect/prometheus/export.qtpl:80 +} + +//line app/vmselect/prometheus/export.qtpl:80 +func WriteExportStdResponse(qq422016 qtio422016.Writer, resultsCh <-chan *quicktemplate.ByteBuffer) { +//line app/vmselect/prometheus/export.qtpl:80 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/export.qtpl:80 + StreamExportStdResponse(qw422016, resultsCh) +//line app/vmselect/prometheus/export.qtpl:80 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/export.qtpl:80 +} + +//line app/vmselect/prometheus/export.qtpl:80 +func ExportStdResponse(resultsCh <-chan *quicktemplate.ByteBuffer) string { +//line app/vmselect/prometheus/export.qtpl:80 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/export.qtpl:80 + WriteExportStdResponse(qb422016, resultsCh) +//line app/vmselect/prometheus/export.qtpl:80 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/export.qtpl:80 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/export.qtpl:80 + return qs422016 +//line app/vmselect/prometheus/export.qtpl:80 +} + +//line app/vmselect/prometheus/export.qtpl:82 +func streamprometheusMetricName(qw422016 *qt422016.Writer, mn *storage.MetricName) { +//line app/vmselect/prometheus/export.qtpl:83 + qw422016.N().Z(mn.MetricGroup) +//line app/vmselect/prometheus/export.qtpl:84 + if len(mn.Tags) > 0 { +//line app/vmselect/prometheus/export.qtpl:84 + qw422016.N().S(`{`) +//line app/vmselect/prometheus/export.qtpl:86 + tags := mn.Tags + +//line app/vmselect/prometheus/export.qtpl:87 + qw422016.N().Z(tags[0].Key) +//line app/vmselect/prometheus/export.qtpl:87 + qw422016.N().S(`=`) +//line app/vmselect/prometheus/export.qtpl:87 + qw422016.N().QZ(tags[0].Value) +//line app/vmselect/prometheus/export.qtpl:88 + tags = tags[1:] + +//line app/vmselect/prometheus/export.qtpl:89 + for i := range tags { +//line app/vmselect/prometheus/export.qtpl:90 + tag := &tags[i] + +//line app/vmselect/prometheus/export.qtpl:90 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/export.qtpl:91 + qw422016.N().Z(tag.Key) +//line app/vmselect/prometheus/export.qtpl:91 + qw422016.N().S(`=`) +//line app/vmselect/prometheus/export.qtpl:91 + qw422016.N().QZ(tag.Value) +//line app/vmselect/prometheus/export.qtpl:92 + } +//line app/vmselect/prometheus/export.qtpl:92 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/export.qtpl:94 + } +//line app/vmselect/prometheus/export.qtpl:95 +} + +//line app/vmselect/prometheus/export.qtpl:95 +func writeprometheusMetricName(qq422016 qtio422016.Writer, mn *storage.MetricName) { +//line app/vmselect/prometheus/export.qtpl:95 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/export.qtpl:95 + streamprometheusMetricName(qw422016, mn) +//line app/vmselect/prometheus/export.qtpl:95 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/export.qtpl:95 +} + +//line app/vmselect/prometheus/export.qtpl:95 +func prometheusMetricName(mn *storage.MetricName) string { +//line app/vmselect/prometheus/export.qtpl:95 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/export.qtpl:95 + writeprometheusMetricName(qb422016, mn) +//line app/vmselect/prometheus/export.qtpl:95 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/export.qtpl:95 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/export.qtpl:95 + return qs422016 +//line app/vmselect/prometheus/export.qtpl:95 +} diff --git a/app/vmselect/prometheus/federate.qtpl b/app/vmselect/prometheus/federate.qtpl new file mode 100644 index 000000000..efcdb6c97 --- /dev/null +++ b/app/vmselect/prometheus/federate.qtpl @@ -0,0 +1,16 @@ +{% import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" +) %} + +{% stripspace %} + +// Federate writes rs in /federate format. +// See https://prometheus.io/docs/prometheus/latest/federation/ +{% func Federate(rs *netstorage.Result) %} + {% if len(rs.Timestamps) == 0 || len(rs.Values) == 0 %}{% return %}{% endif %} + {%= prometheusMetricName(&rs.MetricName) %}{% space %} + {%f= rs.Values[len(rs.Values)-1] %}{% space %} + {%d= int(rs.Timestamps[len(rs.Timestamps)-1]) %}{% newline %} +{% endfunc %} + +{% endstripspace %} diff --git a/app/vmselect/prometheus/federate.qtpl.go b/app/vmselect/prometheus/federate.qtpl.go new file mode 100644 index 000000000..942a55b7f --- /dev/null +++ b/app/vmselect/prometheus/federate.qtpl.go @@ -0,0 +1,75 @@ +// Code generated by qtc from "federate.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line app/vmselect/prometheus/federate.qtpl:1 +package prometheus + +//line app/vmselect/prometheus/federate.qtpl:1 +import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" +) + +// Federate writes rs in /federate format.// See https://prometheus.io/docs/prometheus/latest/federation/ + +//line app/vmselect/prometheus/federate.qtpl:9 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/federate.qtpl:9 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/federate.qtpl:9 +func StreamFederate(qw422016 *qt422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/federate.qtpl:10 + if len(rs.Timestamps) == 0 || len(rs.Values) == 0 { +//line app/vmselect/prometheus/federate.qtpl:10 + return +//line app/vmselect/prometheus/federate.qtpl:10 + } +//line app/vmselect/prometheus/federate.qtpl:11 + streamprometheusMetricName(qw422016, &rs.MetricName) +//line app/vmselect/prometheus/federate.qtpl:11 + qw422016.N().S(` `) +//line app/vmselect/prometheus/federate.qtpl:12 + qw422016.N().F(rs.Values[len(rs.Values)-1]) +//line app/vmselect/prometheus/federate.qtpl:12 + qw422016.N().S(` `) +//line app/vmselect/prometheus/federate.qtpl:13 + qw422016.N().D(int(rs.Timestamps[len(rs.Timestamps)-1])) +//line app/vmselect/prometheus/federate.qtpl:13 + qw422016.N().S(` +`) +//line app/vmselect/prometheus/federate.qtpl:14 +} + +//line app/vmselect/prometheus/federate.qtpl:14 +func WriteFederate(qq422016 qtio422016.Writer, rs *netstorage.Result) { +//line app/vmselect/prometheus/federate.qtpl:14 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/federate.qtpl:14 + StreamFederate(qw422016, rs) +//line app/vmselect/prometheus/federate.qtpl:14 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/federate.qtpl:14 +} + +//line app/vmselect/prometheus/federate.qtpl:14 +func Federate(rs *netstorage.Result) string { +//line app/vmselect/prometheus/federate.qtpl:14 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/federate.qtpl:14 + WriteFederate(qb422016, rs) +//line app/vmselect/prometheus/federate.qtpl:14 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/federate.qtpl:14 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/federate.qtpl:14 + return qs422016 +//line app/vmselect/prometheus/federate.qtpl:14 +} diff --git a/app/vmselect/prometheus/label_values_response.qtpl b/app/vmselect/prometheus/label_values_response.qtpl new file mode 100644 index 000000000..76d79f165 --- /dev/null +++ b/app/vmselect/prometheus/label_values_response.qtpl @@ -0,0 +1,15 @@ +{% stripspace %} +LabelValuesResponse generates response for /api/v1/label//values . +See https://prometheus.io/docs/prometheus/latest/querying/api/#querying-label-values +{% func LabelValuesResponse(labelValues []string) %} +{ + "status":"success", + "data":[ + {% for i, labelValue := range labelValues %} + {%q= labelValue %} + {% if i+1 < len(labelValues) %},{% endif %} + {% endfor %} + ] +} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/label_values_response.qtpl.go b/app/vmselect/prometheus/label_values_response.qtpl.go new file mode 100644 index 000000000..65f689834 --- /dev/null +++ b/app/vmselect/prometheus/label_values_response.qtpl.go @@ -0,0 +1,67 @@ +// Code generated by qtc from "label_values_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +// LabelValuesResponse generates response for /api/v1/label//values .See https://prometheus.io/docs/prometheus/latest/querying/api/#querying-label-values + +//line app/vmselect/prometheus/label_values_response.qtpl:4 +package prometheus + +//line app/vmselect/prometheus/label_values_response.qtpl:4 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/label_values_response.qtpl:4 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/label_values_response.qtpl:4 +func StreamLabelValuesResponse(qw422016 *qt422016.Writer, labelValues []string) { +//line app/vmselect/prometheus/label_values_response.qtpl:4 + qw422016.N().S(`{"status":"success","data":[`) +//line app/vmselect/prometheus/label_values_response.qtpl:8 + for i, labelValue := range labelValues { +//line app/vmselect/prometheus/label_values_response.qtpl:9 + qw422016.N().Q(labelValue) +//line app/vmselect/prometheus/label_values_response.qtpl:10 + if i+1 < len(labelValues) { +//line app/vmselect/prometheus/label_values_response.qtpl:10 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/label_values_response.qtpl:10 + } +//line app/vmselect/prometheus/label_values_response.qtpl:11 + } +//line app/vmselect/prometheus/label_values_response.qtpl:11 + qw422016.N().S(`]}`) +//line app/vmselect/prometheus/label_values_response.qtpl:14 +} + +//line app/vmselect/prometheus/label_values_response.qtpl:14 +func WriteLabelValuesResponse(qq422016 qtio422016.Writer, labelValues []string) { +//line app/vmselect/prometheus/label_values_response.qtpl:14 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/label_values_response.qtpl:14 + StreamLabelValuesResponse(qw422016, labelValues) +//line app/vmselect/prometheus/label_values_response.qtpl:14 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/label_values_response.qtpl:14 +} + +//line app/vmselect/prometheus/label_values_response.qtpl:14 +func LabelValuesResponse(labelValues []string) string { +//line app/vmselect/prometheus/label_values_response.qtpl:14 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/label_values_response.qtpl:14 + WriteLabelValuesResponse(qb422016, labelValues) +//line app/vmselect/prometheus/label_values_response.qtpl:14 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/label_values_response.qtpl:14 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/label_values_response.qtpl:14 + return qs422016 +//line app/vmselect/prometheus/label_values_response.qtpl:14 +} diff --git a/app/vmselect/prometheus/labels_response.qtpl b/app/vmselect/prometheus/labels_response.qtpl new file mode 100644 index 000000000..0cfbd3f45 --- /dev/null +++ b/app/vmselect/prometheus/labels_response.qtpl @@ -0,0 +1,15 @@ +{% stripspace %} +LabelsResponse generates response for /api/v1/labels . +See https://prometheus.io/docs/prometheus/latest/querying/api/#getting-label-names +{% func LabelsResponse(labels []string) %} +{ + "status":"success", + "data":[ + {% for i, label := range labels %} + {%q= label %} + {% if i+1 < len(labels) %},{% endif %} + {% endfor %} + ] +} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/labels_response.qtpl.go b/app/vmselect/prometheus/labels_response.qtpl.go new file mode 100644 index 000000000..977d73648 --- /dev/null +++ b/app/vmselect/prometheus/labels_response.qtpl.go @@ -0,0 +1,67 @@ +// Code generated by qtc from "labels_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +// LabelsResponse generates response for /api/v1/labels .See https://prometheus.io/docs/prometheus/latest/querying/api/#getting-label-names + +//line app/vmselect/prometheus/labels_response.qtpl:4 +package prometheus + +//line app/vmselect/prometheus/labels_response.qtpl:4 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/labels_response.qtpl:4 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/labels_response.qtpl:4 +func StreamLabelsResponse(qw422016 *qt422016.Writer, labels []string) { +//line app/vmselect/prometheus/labels_response.qtpl:4 + qw422016.N().S(`{"status":"success","data":[`) +//line app/vmselect/prometheus/labels_response.qtpl:8 + for i, label := range labels { +//line app/vmselect/prometheus/labels_response.qtpl:9 + qw422016.N().Q(label) +//line app/vmselect/prometheus/labels_response.qtpl:10 + if i+1 < len(labels) { +//line app/vmselect/prometheus/labels_response.qtpl:10 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/labels_response.qtpl:10 + } +//line app/vmselect/prometheus/labels_response.qtpl:11 + } +//line app/vmselect/prometheus/labels_response.qtpl:11 + qw422016.N().S(`]}`) +//line app/vmselect/prometheus/labels_response.qtpl:14 +} + +//line app/vmselect/prometheus/labels_response.qtpl:14 +func WriteLabelsResponse(qq422016 qtio422016.Writer, labels []string) { +//line app/vmselect/prometheus/labels_response.qtpl:14 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/labels_response.qtpl:14 + StreamLabelsResponse(qw422016, labels) +//line app/vmselect/prometheus/labels_response.qtpl:14 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/labels_response.qtpl:14 +} + +//line app/vmselect/prometheus/labels_response.qtpl:14 +func LabelsResponse(labels []string) string { +//line app/vmselect/prometheus/labels_response.qtpl:14 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/labels_response.qtpl:14 + WriteLabelsResponse(qb422016, labels) +//line app/vmselect/prometheus/labels_response.qtpl:14 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/labels_response.qtpl:14 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/labels_response.qtpl:14 + return qs422016 +//line app/vmselect/prometheus/labels_response.qtpl:14 +} diff --git a/app/vmselect/prometheus/prometheus.go b/app/vmselect/prometheus/prometheus.go new file mode 100644 index 000000000..14b581ffc --- /dev/null +++ b/app/vmselect/prometheus/prometheus.go @@ -0,0 +1,550 @@ +package prometheus + +import ( + "flag" + "fmt" + "math" + "net/http" + "runtime" + "strconv" + "strings" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/promql" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/VictoriaMetrics/metrics" + "github.com/valyala/quicktemplate" +) + +var ( + maxQueryDuration = flag.Duration("search.maxQueryDuration", time.Second*30, "The maximum time for search query execution") + maxQueryLen = flag.Int("search.maxQueryLen", 16*1024, "The maximum search query length in bytes") +) + +// Default step used if not set. +const defaultStep = 5 * 60 * 1000 + +// Latency for data processing pipeline, i.e. the time between data is ignested +// into the system and the time it becomes visible to search. +const latencyOffset = 60 * 1000 + +// FederateHandler implements /federate . See https://prometheus.io/docs/prometheus/latest/federation/ +func FederateHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + ct := currentTime() + if err := r.ParseForm(); err != nil { + return fmt.Errorf("cannot parse request form values: %s", err) + } + matches := r.Form["match[]"] + maxLookback := getDuration(r, "max_lookback", defaultStep) + start := getTime(r, "start", ct-maxLookback) + end := getTime(r, "end", ct) + deadline := getDeadline(r) + if start >= end { + start = end - defaultStep + } + tagFilterss, err := getTagFilterssFromMatches(matches) + if err != nil { + return err + } + sq := &storage.SearchQuery{ + MinTimestamp: start, + MaxTimestamp: end, + TagFilterss: tagFilterss, + } + rss, err := netstorage.ProcessSearchQuery(sq, deadline) + if err != nil { + return fmt.Errorf("cannot fetch data for %q: %s", sq, err) + } + + resultsCh := make(chan *quicktemplate.ByteBuffer) + doneCh := make(chan error) + go func() { + err := rss.RunParallel(func(rs *netstorage.Result) { + bb := quicktemplate.AcquireByteBuffer() + WriteFederate(bb, rs) + resultsCh <- bb + }) + close(resultsCh) + doneCh <- err + }() + + w.Header().Set("Content-Type", "text/plain") + for bb := range resultsCh { + w.Write(bb.B) + quicktemplate.ReleaseByteBuffer(bb) + } + + err = <-doneCh + if err != nil { + return fmt.Errorf("error during data fetching: %s", err) + } + federateDuration.UpdateDuration(startTime) + return nil +} + +var federateDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/federate"}`) + +// ExportHandler exports data in raw format from /api/v1/export. +func ExportHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + ct := currentTime() + if err := r.ParseForm(); err != nil { + return fmt.Errorf("cannot parse request form values: %s", err) + } + matches := r.Form["match[]"] + if len(matches) == 0 { + // Maintain backwards compatibility + match := r.FormValue("match") + matches = []string{match} + } + start := getTime(r, "start", 0) + end := getTime(r, "end", ct) + format := r.FormValue("format") + deadline := getDeadline(r) + if start >= end { + start = end - defaultStep + } + if err := exportHandler(w, matches, start, end, format, deadline); err != nil { + return err + } + exportDuration.UpdateDuration(startTime) + return nil +} + +var exportDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/export"}`) + +func exportHandler(w http.ResponseWriter, matches []string, start, end int64, format string, deadline netstorage.Deadline) error { + writeResponseFunc := WriteExportStdResponse + writeLineFunc := WriteExportJSONLine + contentType := "application/json" + if format == "prometheus" { + contentType = "text/plain" + writeLineFunc = WriteExportPrometheusLine + } else if format == "promapi" { + writeResponseFunc = WriteExportPromAPIResponse + writeLineFunc = WriteExportPromAPILine + } + + tagFilterss, err := getTagFilterssFromMatches(matches) + if err != nil { + return err + } + sq := &storage.SearchQuery{ + MinTimestamp: start, + MaxTimestamp: end, + TagFilterss: tagFilterss, + } + rss, err := netstorage.ProcessSearchQuery(sq, deadline) + if err != nil { + return fmt.Errorf("cannot fetch data for %q: %s", sq, err) + } + + resultsCh := make(chan *quicktemplate.ByteBuffer, runtime.GOMAXPROCS(-1)) + doneCh := make(chan error) + go func() { + err := rss.RunParallel(func(rs *netstorage.Result) { + bb := quicktemplate.AcquireByteBuffer() + writeLineFunc(bb, rs) + resultsCh <- bb + }) + close(resultsCh) + doneCh <- err + }() + + w.Header().Set("Content-Type", contentType) + writeResponseFunc(w, resultsCh) + + err = <-doneCh + if err != nil { + return fmt.Errorf("error during data fetching: %s", err) + } + return nil +} + +// DeleteHandler processes /api/v1/admin/tsdb/delete_series prometheus API request. +// +// See https://prometheus.io/docs/prometheus/latest/querying/api/#delete-series +func DeleteHandler(r *http.Request) error { + startTime := time.Now() + if err := r.ParseForm(); err != nil { + return fmt.Errorf("cannot parse request form values: %s", err) + } + if r.FormValue("start") != "" || r.FormValue("end") != "" { + return fmt.Errorf("start and end aren't supported. Remove these args from the query in order to delete all the matching metrics") + } + matches := r.Form["match[]"] + tagFilterss, err := getTagFilterssFromMatches(matches) + if err != nil { + return err + } + sq := &storage.SearchQuery{ + TagFilterss: tagFilterss, + } + deletedCount, err := netstorage.DeleteSeries(sq) + if err != nil { + return fmt.Errorf("cannot delete time series matching %q: %s", matches, err) + } + if deletedCount > 0 { + promql.ResetRollupResultCache() + } + deleteDuration.UpdateDuration(startTime) + return nil +} + +var deleteDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/admin/tsdb/delete_series"}`) + +// LabelValuesHandler processes /api/v1/label//values request. +// +// See https://prometheus.io/docs/prometheus/latest/querying/api/#querying-label-values +func LabelValuesHandler(labelName string, w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + deadline := getDeadline(r) + labelValues, err := netstorage.GetLabelValues(labelName, deadline) + if err != nil { + return fmt.Errorf(`cannot obtain label values for %q: %s`, labelName, err) + } + + w.Header().Set("Content-Type", "application/json") + WriteLabelValuesResponse(w, labelValues) + labelValuesDuration.UpdateDuration(startTime) + return nil +} + +var labelValuesDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/label/{}/values"}`) + +// LabelsHandler processes /api/v1/labels request. +// +// See https://prometheus.io/docs/prometheus/latest/querying/api/#getting-label-names +func LabelsHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + deadline := getDeadline(r) + labels, err := netstorage.GetLabels(deadline) + if err != nil { + return fmt.Errorf("cannot obtain labels: %s", err) + } + + w.Header().Set("Content-Type", "application/json") + WriteLabelsResponse(w, labels) + labelsDuration.UpdateDuration(startTime) + return nil +} + +var labelsDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/labels"}`) + +// SeriesCountHandler processes /api/v1/series/count request. +func SeriesCountHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + deadline := getDeadline(r) + n, err := netstorage.GetSeriesCount(deadline) + if err != nil { + return fmt.Errorf("cannot obtain series count: %s", err) + } + w.Header().Set("Content-Type", "application/json") + WriteSeriesCountResponse(w, n) + seriesCountDuration.UpdateDuration(startTime) + return nil +} + +var seriesCountDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/series/count"}`) + +// SeriesHandler processes /api/v1/series request. +// +// See https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers +func SeriesHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + ct := currentTime() + + if err := r.ParseForm(); err != nil { + return fmt.Errorf("cannot parse form values: %s", err) + } + matches := r.Form["match[]"] + start := getTime(r, "start", ct-defaultStep) + end := getTime(r, "end", ct) + deadline := getDeadline(r) + + tagFilterss, err := getTagFilterssFromMatches(matches) + if err != nil { + return err + } + if start >= end { + start = end - defaultStep + } + sq := &storage.SearchQuery{ + MinTimestamp: start, + MaxTimestamp: end, + TagFilterss: tagFilterss, + } + rss, err := netstorage.ProcessSearchQuery(sq, deadline) + if err != nil { + return fmt.Errorf("cannot fetch data for %q: %s", sq, err) + } + + resultsCh := make(chan *quicktemplate.ByteBuffer) + doneCh := make(chan error) + go func() { + err := rss.RunParallel(func(rs *netstorage.Result) { + bb := quicktemplate.AcquireByteBuffer() + writemetricNameObject(bb, &rs.MetricName) + resultsCh <- bb + }) + close(resultsCh) + doneCh <- err + }() + + w.Header().Set("Content-Type", "application/json") + WriteSeriesResponse(w, resultsCh) + + // Consume all the data from resultsCh in the event WriteSeriesResponse + // fail to consume all the data. + for bb := range resultsCh { + quicktemplate.ReleaseByteBuffer(bb) + } + + err = <-doneCh + if err != nil { + return fmt.Errorf("error during data fetching: %s", err) + } + seriesDuration.UpdateDuration(startTime) + return nil +} + +var seriesDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/series"}`) + +// QueryHandler processes /api/v1/query request. +// +// See https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries +func QueryHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + ct := currentTime() + + query := r.FormValue("query") + start := getTime(r, "time", ct) + step := getDuration(r, "step", latencyOffset) + deadline := getDeadline(r) + + if len(query) > *maxQueryLen { + return fmt.Errorf(`too long query; got %d bytes; mustn't exceed %d bytes`, len(query), *maxQueryLen) + } + if ct-start < latencyOffset { + start -= latencyOffset + } + if childQuery, windowStr, offsetStr := promql.IsMetricSelectorWithRollup(query); childQuery != "" { + var window int64 + if len(windowStr) > 0 { + var err error + window, err = promql.DurationValue(windowStr, step) + if err != nil { + return err + } + } + var offset int64 + if len(offsetStr) > 0 { + var err error + offset, err = promql.DurationValue(offsetStr, step) + if err != nil { + return err + } + } + start -= offset + end := start + start = end - window + if err := exportHandler(w, []string{childQuery}, start, end, "promapi", deadline); err != nil { + return err + } + queryDuration.UpdateDuration(startTime) + return nil + } + + ec := promql.EvalConfig{ + Start: start, + End: start, + Step: step, + Deadline: deadline, + } + result, err := promql.Exec(&ec, query) + if err != nil { + return fmt.Errorf("cannot execute %q: %s", query, err) + } + + w.Header().Set("Content-Type", "application/json") + WriteQueryResponse(w, result) + queryDuration.UpdateDuration(startTime) + return nil +} + +var queryDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/query"}`) + +// QueryRangeHandler processes /api/v1/query_range request. +// +// See https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries +func QueryRangeHandler(w http.ResponseWriter, r *http.Request) error { + startTime := time.Now() + ct := currentTime() + + query := r.FormValue("query") + start := getTime(r, "start", ct-defaultStep) + end := getTime(r, "end", ct) + step := getDuration(r, "step", defaultStep) + deadline := getDeadline(r) + mayCache := !getBool(r, "nocache") + + // Validate input args. + if len(query) > *maxQueryLen { + return fmt.Errorf(`too long query; got %d bytes; mustn't exceed %d bytes`, len(query), *maxQueryLen) + } + if start > end { + start = end + } + if err := promql.ValidateMaxPointsPerTimeseries(start, end, step); err != nil { + return err + } + start, end = promql.AdjustStartEnd(start, end, step) + + ec := promql.EvalConfig{ + Start: start, + End: end, + Step: step, + Deadline: deadline, + MayCache: mayCache, + } + result, err := promql.Exec(&ec, query) + if err != nil { + return fmt.Errorf("cannot execute %q: %s", query, err) + } + if ct-end < latencyOffset { + adjustLastPoints(result) + } + + w.Header().Set("Content-Type", "application/json") + WriteQueryRangeResponse(w, result) + queryRangeDuration.UpdateDuration(startTime) + return nil +} + +var queryRangeDuration = metrics.NewSummary(`vm_request_duration_seconds{path="/api/v1/query_range"}`) + +// adjustLastPoints substitutes the last point values with the previous +// point values, since the last points may contain garbage. +func adjustLastPoints(tss []netstorage.Result) { + if len(tss) == 0 { + return + } + + // Search for the last non-NaN value across all the timeseries. + lastNonNaNIdx := -1 + for i := range tss { + r := &tss[i] + j := len(r.Values) - 1 + for j >= 0 && math.IsNaN(r.Values[j]) { + j-- + } + if j > lastNonNaNIdx { + lastNonNaNIdx = j + } + } + if lastNonNaNIdx == -1 { + // All timeseries contain only NaNs. + return + } + + // Substitute last three values starting from lastNonNaNIdx + // with the previous values for each timeseries. + for i := range tss { + r := &tss[i] + for j := 0; j < 3; j++ { + idx := lastNonNaNIdx + j + if idx <= 0 || idx >= len(r.Values) { + continue + } + r.Values[idx] = r.Values[idx-1] + } + } +} + +func getTime(r *http.Request, argKey string, defaultValue int64) int64 { + argValue := r.FormValue(argKey) + if len(argValue) == 0 { + return defaultValue + } + secs, err := strconv.ParseFloat(argValue, 64) + if err != nil { + // Try parsing string format + t, err := time.Parse(time.RFC3339, argValue) + if err != nil { + return defaultValue + } + secs = float64(t.UnixNano()) / 1e9 + } + msecs := int64(secs * 1e3) + if msecs < minTimeMsecs || msecs > maxTimeMsecs { + return defaultValue + } + return msecs +} + +const ( + // These values prevent from overflow when storing msec-precision time in int64. + minTimeMsecs = int64(-1<<63) / 1e6 + maxTimeMsecs = int64(1<<63-1) / 1e6 +) + +func getDuration(r *http.Request, argKey string, defaultValue int64) int64 { + argValue := r.FormValue(argKey) + if len(argValue) == 0 { + return defaultValue + } + secs, err := strconv.ParseFloat(argValue, 64) + if err != nil { + // Try parsing string format + d, err := time.ParseDuration(argValue) + if err != nil { + return defaultValue + } + secs = d.Seconds() + } + msecs := int64(secs * 1e3) + if msecs <= 0 || msecs > maxDurationMsecs { + return defaultValue + } + return msecs +} + +const maxDurationMsecs = 100 * 365 * 24 * 3600 * 1000 + +func getDeadline(r *http.Request) netstorage.Deadline { + d := getDuration(r, "timeout", 0) + dMax := int64(maxQueryDuration.Seconds() * 1e3) + if d <= 0 || d > dMax { + d = dMax + } + timeout := time.Duration(d) * time.Millisecond + return netstorage.NewDeadline(timeout) +} + +func getBool(r *http.Request, argKey string) bool { + argValue := r.FormValue(argKey) + switch strings.ToLower(argValue) { + case "", "0", "f", "false", "no": + return false + default: + return true + } +} + +func currentTime() int64 { + return int64(time.Now().UTC().Unix()) * 1e3 +} + +func getTagFilterssFromMatches(matches []string) ([][]storage.TagFilter, error) { + tagFilterss := make([][]storage.TagFilter, 0, len(matches)) + for _, match := range matches { + tagFilters, err := promql.ParseMetricSelector(match) + if err != nil { + return nil, fmt.Errorf("cannot parse %q: %s", match, err) + } + tagFilterss = append(tagFilterss, tagFilters) + } + return tagFilterss, nil +} diff --git a/app/vmselect/prometheus/query_range_response.qtpl b/app/vmselect/prometheus/query_range_response.qtpl new file mode 100644 index 000000000..41119b28d --- /dev/null +++ b/app/vmselect/prometheus/query_range_response.qtpl @@ -0,0 +1,33 @@ +{% import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" +) %} + +{% stripspace %} +QueryRangeResponse generates response for /api/v1/query_range. +See https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries +{% func QueryRangeResponse(rs []netstorage.Result) %} +{ + "status":"success", + "data":{ + "resultType":"matrix", + "result":[ + {% if len(rs) > 0 %} + {%= queryRangeLine(&rs[0]) %} + {% code rs = rs[1:] %} + {% for i := range rs %} + ,{%= queryRangeLine(&rs[i]) %} + {% endfor %} + {% endif %} + ] + } +} +{% endfunc %} + +{% func queryRangeLine(r *netstorage.Result) %} +{ + "metric": {%= metricNameObject(&r.MetricName) %}, + "values": {%= valuesWithTimestamps(r.Values, r.Timestamps) %} +} +{% endfunc %} + +{% endstripspace %} diff --git a/app/vmselect/prometheus/query_range_response.qtpl.go b/app/vmselect/prometheus/query_range_response.qtpl.go new file mode 100644 index 000000000..25dbe6961 --- /dev/null +++ b/app/vmselect/prometheus/query_range_response.qtpl.go @@ -0,0 +1,118 @@ +// Code generated by qtc from "query_range_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line app/vmselect/prometheus/query_range_response.qtpl:1 +package prometheus + +//line app/vmselect/prometheus/query_range_response.qtpl:1 +import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" +) + +// QueryRangeResponse generates response for /api/v1/query_range.See https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries + +//line app/vmselect/prometheus/query_range_response.qtpl:8 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/query_range_response.qtpl:8 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/query_range_response.qtpl:8 +func StreamQueryRangeResponse(qw422016 *qt422016.Writer, rs []netstorage.Result) { +//line app/vmselect/prometheus/query_range_response.qtpl:8 + qw422016.N().S(`{"status":"success","data":{"resultType":"matrix","result":[`) +//line app/vmselect/prometheus/query_range_response.qtpl:14 + if len(rs) > 0 { +//line app/vmselect/prometheus/query_range_response.qtpl:15 + streamqueryRangeLine(qw422016, &rs[0]) +//line app/vmselect/prometheus/query_range_response.qtpl:16 + rs = rs[1:] + +//line app/vmselect/prometheus/query_range_response.qtpl:17 + for i := range rs { +//line app/vmselect/prometheus/query_range_response.qtpl:17 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/query_range_response.qtpl:18 + streamqueryRangeLine(qw422016, &rs[i]) +//line app/vmselect/prometheus/query_range_response.qtpl:19 + } +//line app/vmselect/prometheus/query_range_response.qtpl:20 + } +//line app/vmselect/prometheus/query_range_response.qtpl:20 + qw422016.N().S(`]}}`) +//line app/vmselect/prometheus/query_range_response.qtpl:24 +} + +//line app/vmselect/prometheus/query_range_response.qtpl:24 +func WriteQueryRangeResponse(qq422016 qtio422016.Writer, rs []netstorage.Result) { +//line app/vmselect/prometheus/query_range_response.qtpl:24 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/query_range_response.qtpl:24 + StreamQueryRangeResponse(qw422016, rs) +//line app/vmselect/prometheus/query_range_response.qtpl:24 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/query_range_response.qtpl:24 +} + +//line app/vmselect/prometheus/query_range_response.qtpl:24 +func QueryRangeResponse(rs []netstorage.Result) string { +//line app/vmselect/prometheus/query_range_response.qtpl:24 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/query_range_response.qtpl:24 + WriteQueryRangeResponse(qb422016, rs) +//line app/vmselect/prometheus/query_range_response.qtpl:24 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/query_range_response.qtpl:24 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/query_range_response.qtpl:24 + return qs422016 +//line app/vmselect/prometheus/query_range_response.qtpl:24 +} + +//line app/vmselect/prometheus/query_range_response.qtpl:26 +func streamqueryRangeLine(qw422016 *qt422016.Writer, r *netstorage.Result) { +//line app/vmselect/prometheus/query_range_response.qtpl:26 + qw422016.N().S(`{"metric":`) +//line app/vmselect/prometheus/query_range_response.qtpl:28 + streammetricNameObject(qw422016, &r.MetricName) +//line app/vmselect/prometheus/query_range_response.qtpl:28 + qw422016.N().S(`,"values":`) +//line app/vmselect/prometheus/query_range_response.qtpl:29 + streamvaluesWithTimestamps(qw422016, r.Values, r.Timestamps) +//line app/vmselect/prometheus/query_range_response.qtpl:29 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/query_range_response.qtpl:31 +} + +//line app/vmselect/prometheus/query_range_response.qtpl:31 +func writequeryRangeLine(qq422016 qtio422016.Writer, r *netstorage.Result) { +//line app/vmselect/prometheus/query_range_response.qtpl:31 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/query_range_response.qtpl:31 + streamqueryRangeLine(qw422016, r) +//line app/vmselect/prometheus/query_range_response.qtpl:31 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/query_range_response.qtpl:31 +} + +//line app/vmselect/prometheus/query_range_response.qtpl:31 +func queryRangeLine(r *netstorage.Result) string { +//line app/vmselect/prometheus/query_range_response.qtpl:31 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/query_range_response.qtpl:31 + writequeryRangeLine(qb422016, r) +//line app/vmselect/prometheus/query_range_response.qtpl:31 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/query_range_response.qtpl:31 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/query_range_response.qtpl:31 + return qs422016 +//line app/vmselect/prometheus/query_range_response.qtpl:31 +} diff --git a/app/vmselect/prometheus/query_response.qtpl b/app/vmselect/prometheus/query_response.qtpl new file mode 100644 index 000000000..0aa0149be --- /dev/null +++ b/app/vmselect/prometheus/query_response.qtpl @@ -0,0 +1,32 @@ +{% import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" +) %} + +{% stripspace %} +QueryResponse generates response for /api/v1/query. +See https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries +{% func QueryResponse(rs []netstorage.Result) %} +{ + "status":"success", + "data":{ + "resultType":"vector", + "result":[ + {% if len(rs) > 0 %} + { + "metric": {%= metricNameObject(&rs[0].MetricName) %}, + "value": {%= metricRow(rs[0].Timestamps[0], rs[0].Values[0]) %} + } + {% code rs = rs[1:] %} + {% for i := range rs %} + {% code r := &rs[i] %} + ,{ + "metric": {%= metricNameObject(&r.MetricName) %}, + "value": {%= metricRow(r.Timestamps[0], r.Values[0]) %} + } + {% endfor %} + {% endif %} + ] + } +} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/query_response.qtpl.go b/app/vmselect/prometheus/query_response.qtpl.go new file mode 100644 index 000000000..af6ec4ae9 --- /dev/null +++ b/app/vmselect/prometheus/query_response.qtpl.go @@ -0,0 +1,94 @@ +// Code generated by qtc from "query_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line app/vmselect/prometheus/query_response.qtpl:1 +package prometheus + +//line app/vmselect/prometheus/query_response.qtpl:1 +import ( + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" +) + +// QueryResponse generates response for /api/v1/query.See https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries + +//line app/vmselect/prometheus/query_response.qtpl:8 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/query_response.qtpl:8 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/query_response.qtpl:8 +func StreamQueryResponse(qw422016 *qt422016.Writer, rs []netstorage.Result) { +//line app/vmselect/prometheus/query_response.qtpl:8 + qw422016.N().S(`{"status":"success","data":{"resultType":"vector","result":[`) +//line app/vmselect/prometheus/query_response.qtpl:14 + if len(rs) > 0 { +//line app/vmselect/prometheus/query_response.qtpl:14 + qw422016.N().S(`{"metric":`) +//line app/vmselect/prometheus/query_response.qtpl:16 + streammetricNameObject(qw422016, &rs[0].MetricName) +//line app/vmselect/prometheus/query_response.qtpl:16 + qw422016.N().S(`,"value":`) +//line app/vmselect/prometheus/query_response.qtpl:17 + streammetricRow(qw422016, rs[0].Timestamps[0], rs[0].Values[0]) +//line app/vmselect/prometheus/query_response.qtpl:17 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/query_response.qtpl:19 + rs = rs[1:] + +//line app/vmselect/prometheus/query_response.qtpl:20 + for i := range rs { +//line app/vmselect/prometheus/query_response.qtpl:21 + r := &rs[i] + +//line app/vmselect/prometheus/query_response.qtpl:21 + qw422016.N().S(`,{"metric":`) +//line app/vmselect/prometheus/query_response.qtpl:23 + streammetricNameObject(qw422016, &r.MetricName) +//line app/vmselect/prometheus/query_response.qtpl:23 + qw422016.N().S(`,"value":`) +//line app/vmselect/prometheus/query_response.qtpl:24 + streammetricRow(qw422016, r.Timestamps[0], r.Values[0]) +//line app/vmselect/prometheus/query_response.qtpl:24 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/query_response.qtpl:26 + } +//line app/vmselect/prometheus/query_response.qtpl:27 + } +//line app/vmselect/prometheus/query_response.qtpl:27 + qw422016.N().S(`]}}`) +//line app/vmselect/prometheus/query_response.qtpl:31 +} + +//line app/vmselect/prometheus/query_response.qtpl:31 +func WriteQueryResponse(qq422016 qtio422016.Writer, rs []netstorage.Result) { +//line app/vmselect/prometheus/query_response.qtpl:31 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/query_response.qtpl:31 + StreamQueryResponse(qw422016, rs) +//line app/vmselect/prometheus/query_response.qtpl:31 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/query_response.qtpl:31 +} + +//line app/vmselect/prometheus/query_response.qtpl:31 +func QueryResponse(rs []netstorage.Result) string { +//line app/vmselect/prometheus/query_response.qtpl:31 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/query_response.qtpl:31 + WriteQueryResponse(qb422016, rs) +//line app/vmselect/prometheus/query_response.qtpl:31 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/query_response.qtpl:31 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/query_response.qtpl:31 + return qs422016 +//line app/vmselect/prometheus/query_response.qtpl:31 +} diff --git a/app/vmselect/prometheus/series_count_response.qtpl b/app/vmselect/prometheus/series_count_response.qtpl new file mode 100644 index 000000000..4e2a22807 --- /dev/null +++ b/app/vmselect/prometheus/series_count_response.qtpl @@ -0,0 +1,9 @@ +{% stripspace %} +SeriesCountResponse generates response for /api/v1/series/count . +{% func SeriesCountResponse(n uint64) %} +{ + "status":"success", + "data":[{%d int(n) %}] +} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/series_count_response.qtpl.go b/app/vmselect/prometheus/series_count_response.qtpl.go new file mode 100644 index 000000000..1e41b22fc --- /dev/null +++ b/app/vmselect/prometheus/series_count_response.qtpl.go @@ -0,0 +1,57 @@ +// Code generated by qtc from "series_count_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +// SeriesCountResponse generates response for /api/v1/series/count . + +//line app/vmselect/prometheus/series_count_response.qtpl:3 +package prometheus + +//line app/vmselect/prometheus/series_count_response.qtpl:3 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/series_count_response.qtpl:3 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/series_count_response.qtpl:3 +func StreamSeriesCountResponse(qw422016 *qt422016.Writer, n uint64) { +//line app/vmselect/prometheus/series_count_response.qtpl:3 + qw422016.N().S(`{"status":"success","data":[`) +//line app/vmselect/prometheus/series_count_response.qtpl:6 + qw422016.N().D(int(n)) +//line app/vmselect/prometheus/series_count_response.qtpl:6 + qw422016.N().S(`]}`) +//line app/vmselect/prometheus/series_count_response.qtpl:8 +} + +//line app/vmselect/prometheus/series_count_response.qtpl:8 +func WriteSeriesCountResponse(qq422016 qtio422016.Writer, n uint64) { +//line app/vmselect/prometheus/series_count_response.qtpl:8 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/series_count_response.qtpl:8 + StreamSeriesCountResponse(qw422016, n) +//line app/vmselect/prometheus/series_count_response.qtpl:8 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/series_count_response.qtpl:8 +} + +//line app/vmselect/prometheus/series_count_response.qtpl:8 +func SeriesCountResponse(n uint64) string { +//line app/vmselect/prometheus/series_count_response.qtpl:8 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/series_count_response.qtpl:8 + WriteSeriesCountResponse(qb422016, n) +//line app/vmselect/prometheus/series_count_response.qtpl:8 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/series_count_response.qtpl:8 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/series_count_response.qtpl:8 + return qs422016 +//line app/vmselect/prometheus/series_count_response.qtpl:8 +} diff --git a/app/vmselect/prometheus/series_response.qtpl b/app/vmselect/prometheus/series_response.qtpl new file mode 100644 index 000000000..39dd732b5 --- /dev/null +++ b/app/vmselect/prometheus/series_response.qtpl @@ -0,0 +1,24 @@ +{% import ( + "github.com/valyala/quicktemplate" +) %} + +{% stripspace %} +SeriesResponse generates response for /api/v1/series. +See https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers +{% func SeriesResponse(resultsCh <-chan *quicktemplate.ByteBuffer) %} +{ + "status":"success", + "data":[ + {% code bb, ok := <-resultsCh %} + {% if ok %} + {%z= bb.B %} + {% code quicktemplate.ReleaseByteBuffer(bb) %} + {% for bb := range resultsCh %} + ,{%z= bb.B %} + {% code quicktemplate.ReleaseByteBuffer(bb) %} + {% endfor %} + {% endif %} + ] +} +{% endfunc %} +{% endstripspace %} diff --git a/app/vmselect/prometheus/series_response.qtpl.go b/app/vmselect/prometheus/series_response.qtpl.go new file mode 100644 index 000000000..009634a20 --- /dev/null +++ b/app/vmselect/prometheus/series_response.qtpl.go @@ -0,0 +1,83 @@ +// Code generated by qtc from "series_response.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line app/vmselect/prometheus/series_response.qtpl:1 +package prometheus + +//line app/vmselect/prometheus/series_response.qtpl:1 +import ( + "github.com/valyala/quicktemplate" +) + +// SeriesResponse generates response for /api/v1/series.See https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers + +//line app/vmselect/prometheus/series_response.qtpl:8 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/series_response.qtpl:8 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/series_response.qtpl:8 +func StreamSeriesResponse(qw422016 *qt422016.Writer, resultsCh <-chan *quicktemplate.ByteBuffer) { +//line app/vmselect/prometheus/series_response.qtpl:8 + qw422016.N().S(`{"status":"success","data":[`) +//line app/vmselect/prometheus/series_response.qtpl:12 + bb, ok := <-resultsCh + +//line app/vmselect/prometheus/series_response.qtpl:13 + if ok { +//line app/vmselect/prometheus/series_response.qtpl:14 + qw422016.N().Z(bb.B) +//line app/vmselect/prometheus/series_response.qtpl:15 + quicktemplate.ReleaseByteBuffer(bb) + +//line app/vmselect/prometheus/series_response.qtpl:16 + for bb := range resultsCh { +//line app/vmselect/prometheus/series_response.qtpl:16 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/series_response.qtpl:17 + qw422016.N().Z(bb.B) +//line app/vmselect/prometheus/series_response.qtpl:18 + quicktemplate.ReleaseByteBuffer(bb) + +//line app/vmselect/prometheus/series_response.qtpl:19 + } +//line app/vmselect/prometheus/series_response.qtpl:20 + } +//line app/vmselect/prometheus/series_response.qtpl:20 + qw422016.N().S(`]}`) +//line app/vmselect/prometheus/series_response.qtpl:23 +} + +//line app/vmselect/prometheus/series_response.qtpl:23 +func WriteSeriesResponse(qq422016 qtio422016.Writer, resultsCh <-chan *quicktemplate.ByteBuffer) { +//line app/vmselect/prometheus/series_response.qtpl:23 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/series_response.qtpl:23 + StreamSeriesResponse(qw422016, resultsCh) +//line app/vmselect/prometheus/series_response.qtpl:23 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/series_response.qtpl:23 +} + +//line app/vmselect/prometheus/series_response.qtpl:23 +func SeriesResponse(resultsCh <-chan *quicktemplate.ByteBuffer) string { +//line app/vmselect/prometheus/series_response.qtpl:23 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/series_response.qtpl:23 + WriteSeriesResponse(qb422016, resultsCh) +//line app/vmselect/prometheus/series_response.qtpl:23 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/series_response.qtpl:23 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/series_response.qtpl:23 + return qs422016 +//line app/vmselect/prometheus/series_response.qtpl:23 +} diff --git a/app/vmselect/prometheus/util.qtpl b/app/vmselect/prometheus/util.qtpl new file mode 100644 index 000000000..c232c8a8c --- /dev/null +++ b/app/vmselect/prometheus/util.qtpl @@ -0,0 +1,47 @@ +{% import ( + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) %} + +{% stripspace %} + +{% func metricNameObject(mn *storage.MetricName) %} +{ + {% if len(mn.MetricGroup) > 0 %} + "__name__":{%qz= mn.MetricGroup %}{% if len(mn.Tags) > 0 %},{% endif %} + {% endif %} + {% for j := range mn.Tags %} + {% code tag := &mn.Tags[j] %} + {%qz= tag.Key %}:{%qz= tag.Value %}{% if j+1 < len(mn.Tags) %},{% endif %} + {% endfor %} +} +{% endfunc %} + +{% func metricRow(timestamp int64, value float64) %} + [{%f= float64(timestamp)/1e3 %},"{%f= value %}"] +{% endfunc %} + +{% func valuesWithTimestamps(values []float64, timestamps []int64) %} +[ + {% if len(values) == 0 %} + {% return %} + {% endif %} + {% code /* inline metricRow call here for the sake of performance optimization */ %} + [{%f= float64(timestamps[0])/1e3 %},"{%f= values[0] %}"] + {% code + timestamps = timestamps[1:] + values = values[1:] + %} + {% if len(values) > 0 %} + {%code + // Remove bounds check inside the loop below + _ = timestamps[len(values)-1] + %} + {% for i, v := range values %} + {% code /* inline metricRow call here for the sake of performance optimization */ %} + ,[{%f= float64(timestamps[i])/1e3 %},"{%f= v %}"] + {% endfor %} + {% endif %} +] +{% endfunc %} + +{% endstripspace %} diff --git a/app/vmselect/prometheus/util.qtpl.go b/app/vmselect/prometheus/util.qtpl.go new file mode 100644 index 000000000..9a41df873 --- /dev/null +++ b/app/vmselect/prometheus/util.qtpl.go @@ -0,0 +1,215 @@ +// Code generated by qtc from "util.qtpl". DO NOT EDIT. +// See https://github.com/valyala/quicktemplate for details. + +//line app/vmselect/prometheus/util.qtpl:1 +package prometheus + +//line app/vmselect/prometheus/util.qtpl:1 +import ( + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +//line app/vmselect/prometheus/util.qtpl:7 +import ( + qtio422016 "io" + + qt422016 "github.com/valyala/quicktemplate" +) + +//line app/vmselect/prometheus/util.qtpl:7 +var ( + _ = qtio422016.Copy + _ = qt422016.AcquireByteBuffer +) + +//line app/vmselect/prometheus/util.qtpl:7 +func streammetricNameObject(qw422016 *qt422016.Writer, mn *storage.MetricName) { +//line app/vmselect/prometheus/util.qtpl:7 + qw422016.N().S(`{`) +//line app/vmselect/prometheus/util.qtpl:9 + if len(mn.MetricGroup) > 0 { +//line app/vmselect/prometheus/util.qtpl:9 + qw422016.N().S(`"__name__":`) +//line app/vmselect/prometheus/util.qtpl:10 + qw422016.N().QZ(mn.MetricGroup) +//line app/vmselect/prometheus/util.qtpl:10 + if len(mn.Tags) > 0 { +//line app/vmselect/prometheus/util.qtpl:10 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/util.qtpl:10 + } +//line app/vmselect/prometheus/util.qtpl:11 + } +//line app/vmselect/prometheus/util.qtpl:12 + for j := range mn.Tags { +//line app/vmselect/prometheus/util.qtpl:13 + tag := &mn.Tags[j] + +//line app/vmselect/prometheus/util.qtpl:14 + qw422016.N().QZ(tag.Key) +//line app/vmselect/prometheus/util.qtpl:14 + qw422016.N().S(`:`) +//line app/vmselect/prometheus/util.qtpl:14 + qw422016.N().QZ(tag.Value) +//line app/vmselect/prometheus/util.qtpl:14 + if j+1 < len(mn.Tags) { +//line app/vmselect/prometheus/util.qtpl:14 + qw422016.N().S(`,`) +//line app/vmselect/prometheus/util.qtpl:14 + } +//line app/vmselect/prometheus/util.qtpl:15 + } +//line app/vmselect/prometheus/util.qtpl:15 + qw422016.N().S(`}`) +//line app/vmselect/prometheus/util.qtpl:17 +} + +//line app/vmselect/prometheus/util.qtpl:17 +func writemetricNameObject(qq422016 qtio422016.Writer, mn *storage.MetricName) { +//line app/vmselect/prometheus/util.qtpl:17 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/util.qtpl:17 + streammetricNameObject(qw422016, mn) +//line app/vmselect/prometheus/util.qtpl:17 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/util.qtpl:17 +} + +//line app/vmselect/prometheus/util.qtpl:17 +func metricNameObject(mn *storage.MetricName) string { +//line app/vmselect/prometheus/util.qtpl:17 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/util.qtpl:17 + writemetricNameObject(qb422016, mn) +//line app/vmselect/prometheus/util.qtpl:17 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/util.qtpl:17 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/util.qtpl:17 + return qs422016 +//line app/vmselect/prometheus/util.qtpl:17 +} + +//line app/vmselect/prometheus/util.qtpl:19 +func streammetricRow(qw422016 *qt422016.Writer, timestamp int64, value float64) { +//line app/vmselect/prometheus/util.qtpl:19 + qw422016.N().S(`[`) +//line app/vmselect/prometheus/util.qtpl:20 + qw422016.N().F(float64(timestamp) / 1e3) +//line app/vmselect/prometheus/util.qtpl:20 + qw422016.N().S(`,"`) +//line app/vmselect/prometheus/util.qtpl:20 + qw422016.N().F(value) +//line app/vmselect/prometheus/util.qtpl:20 + qw422016.N().S(`"]`) +//line app/vmselect/prometheus/util.qtpl:21 +} + +//line app/vmselect/prometheus/util.qtpl:21 +func writemetricRow(qq422016 qtio422016.Writer, timestamp int64, value float64) { +//line app/vmselect/prometheus/util.qtpl:21 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/util.qtpl:21 + streammetricRow(qw422016, timestamp, value) +//line app/vmselect/prometheus/util.qtpl:21 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/util.qtpl:21 +} + +//line app/vmselect/prometheus/util.qtpl:21 +func metricRow(timestamp int64, value float64) string { +//line app/vmselect/prometheus/util.qtpl:21 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/util.qtpl:21 + writemetricRow(qb422016, timestamp, value) +//line app/vmselect/prometheus/util.qtpl:21 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/util.qtpl:21 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/util.qtpl:21 + return qs422016 +//line app/vmselect/prometheus/util.qtpl:21 +} + +//line app/vmselect/prometheus/util.qtpl:23 +func streamvaluesWithTimestamps(qw422016 *qt422016.Writer, values []float64, timestamps []int64) { +//line app/vmselect/prometheus/util.qtpl:23 + qw422016.N().S(`[`) +//line app/vmselect/prometheus/util.qtpl:25 + if len(values) == 0 { +//line app/vmselect/prometheus/util.qtpl:26 + return +//line app/vmselect/prometheus/util.qtpl:27 + } +//line app/vmselect/prometheus/util.qtpl:28 + /* inline metricRow call here for the sake of performance optimization */ + +//line app/vmselect/prometheus/util.qtpl:28 + qw422016.N().S(`[`) +//line app/vmselect/prometheus/util.qtpl:29 + qw422016.N().F(float64(timestamps[0]) / 1e3) +//line app/vmselect/prometheus/util.qtpl:29 + qw422016.N().S(`,"`) +//line app/vmselect/prometheus/util.qtpl:29 + qw422016.N().F(values[0]) +//line app/vmselect/prometheus/util.qtpl:29 + qw422016.N().S(`"]`) +//line app/vmselect/prometheus/util.qtpl:31 + timestamps = timestamps[1:] + values = values[1:] + +//line app/vmselect/prometheus/util.qtpl:34 + if len(values) > 0 { +//line app/vmselect/prometheus/util.qtpl:36 + // Remove bounds check inside the loop below + _ = timestamps[len(values)-1] + +//line app/vmselect/prometheus/util.qtpl:39 + for i, v := range values { +//line app/vmselect/prometheus/util.qtpl:40 + /* inline metricRow call here for the sake of performance optimization */ + +//line app/vmselect/prometheus/util.qtpl:40 + qw422016.N().S(`,[`) +//line app/vmselect/prometheus/util.qtpl:41 + qw422016.N().F(float64(timestamps[i]) / 1e3) +//line app/vmselect/prometheus/util.qtpl:41 + qw422016.N().S(`,"`) +//line app/vmselect/prometheus/util.qtpl:41 + qw422016.N().F(v) +//line app/vmselect/prometheus/util.qtpl:41 + qw422016.N().S(`"]`) +//line app/vmselect/prometheus/util.qtpl:42 + } +//line app/vmselect/prometheus/util.qtpl:43 + } +//line app/vmselect/prometheus/util.qtpl:43 + qw422016.N().S(`]`) +//line app/vmselect/prometheus/util.qtpl:45 +} + +//line app/vmselect/prometheus/util.qtpl:45 +func writevaluesWithTimestamps(qq422016 qtio422016.Writer, values []float64, timestamps []int64) { +//line app/vmselect/prometheus/util.qtpl:45 + qw422016 := qt422016.AcquireWriter(qq422016) +//line app/vmselect/prometheus/util.qtpl:45 + streamvaluesWithTimestamps(qw422016, values, timestamps) +//line app/vmselect/prometheus/util.qtpl:45 + qt422016.ReleaseWriter(qw422016) +//line app/vmselect/prometheus/util.qtpl:45 +} + +//line app/vmselect/prometheus/util.qtpl:45 +func valuesWithTimestamps(values []float64, timestamps []int64) string { +//line app/vmselect/prometheus/util.qtpl:45 + qb422016 := qt422016.AcquireByteBuffer() +//line app/vmselect/prometheus/util.qtpl:45 + writevaluesWithTimestamps(qb422016, values, timestamps) +//line app/vmselect/prometheus/util.qtpl:45 + qs422016 := string(qb422016.B) +//line app/vmselect/prometheus/util.qtpl:45 + qt422016.ReleaseByteBuffer(qb422016) +//line app/vmselect/prometheus/util.qtpl:45 + return qs422016 +//line app/vmselect/prometheus/util.qtpl:45 +} diff --git a/app/vmselect/promql/aggr.go b/app/vmselect/promql/aggr.go new file mode 100644 index 000000000..2ccbbbc47 --- /dev/null +++ b/app/vmselect/promql/aggr.go @@ -0,0 +1,469 @@ +package promql + +import ( + "fmt" + "math" + "sort" + "strconv" + "strings" +) + +var aggrFuncs = map[string]aggrFunc{ + // See https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators + "sum": newAggrFunc(aggrFuncSum), + "min": newAggrFunc(aggrFuncMin), + "max": newAggrFunc(aggrFuncMax), + "avg": newAggrFunc(aggrFuncAvg), + "stddev": newAggrFunc(aggrFuncStddev), + "stdvar": newAggrFunc(aggrFuncStdvar), + "count": newAggrFunc(aggrFuncCount), + "count_values": aggrFuncCountValues, + "bottomk": newAggrFuncTopK(true), + "topk": newAggrFuncTopK(false), + "quantile": aggrFuncQuantile, + + // Extended PromQL funcs + "median": aggrFuncMedian, + "limitk": aggrFuncLimitK, + "distinct": newAggrFunc(aggrFuncDistinct), +} + +type aggrFunc func(afa *aggrFuncArg) ([]*timeseries, error) + +type aggrFuncArg struct { + args [][]*timeseries + ae *aggrFuncExpr + ec *EvalConfig +} + +func getAggrFunc(s string) aggrFunc { + s = strings.ToLower(s) + return aggrFuncs[s] +} + +func isAggrFunc(s string) bool { + return getAggrFunc(s) != nil +} + +func isAggrFuncModifier(s string) bool { + s = strings.ToLower(s) + switch s { + case "by", "without": + return true + default: + return false + } +} + +func newAggrFunc(afe func(tss []*timeseries) []*timeseries) aggrFunc { + return func(afa *aggrFuncArg) ([]*timeseries, error) { + args := afa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + return aggrFuncExt(afe, args[0], &afa.ae.Modifier, false) + } +} + +func aggrFuncExt(afe func(tss []*timeseries) []*timeseries, argOrig []*timeseries, modifier *modifierExpr, keepOriginal bool) ([]*timeseries, error) { + arg := copyTimeseriesMetricNames(argOrig) + + // Filter out superflouos tags. + var groupTags []string + groupOp := "by" + if modifier.Op != "" { + groupTags = modifier.Args + groupOp = strings.ToLower(modifier.Op) + } + switch groupOp { + case "by": + for _, ts := range arg { + ts.MetricName.RemoveTagsOn(groupTags) + } + case "without": + for _, ts := range arg { + ts.MetricName.RemoveTagsIgnoring(groupTags) + } + default: + return nil, fmt.Errorf(`unknown modifier: %q`, groupOp) + } + + // Perform grouping. + m := make(map[string][]*timeseries) + bb := bbPool.Get() + for i, ts := range arg { + bb.B = marshalMetricNameSorted(bb.B[:0], &ts.MetricName) + if keepOriginal { + ts = argOrig[i] + } + m[string(bb.B)] = append(m[string(bb.B)], ts) + } + bbPool.Put(bb) + + rvs := make([]*timeseries, 0, len(m)) + for _, tss := range m { + rv := afe(tss) + rvs = append(rvs, rv...) + } + return rvs, nil +} + +func aggrFuncSum(tss []*timeseries) []*timeseries { + if len(tss) == 1 { + // Fast path - nothing to sum. + return tss + } + dst := tss[0] + for i := range dst.Values { + sum := float64(0) + count := 0 + for _, ts := range tss { + if math.IsNaN(ts.Values[i]) { + continue + } + sum += ts.Values[i] + count++ + } + if count == 0 { + sum = nan + } + dst.Values[i] = sum + } + return tss[:1] +} + +func aggrFuncMin(tss []*timeseries) []*timeseries { + if len(tss) == 1 { + // Fast path - nothing to min. + return tss + } + dst := tss[0] + for i := range dst.Values { + min := dst.Values[i] + for _, ts := range tss { + if math.IsNaN(min) || ts.Values[i] < min { + min = ts.Values[i] + } + } + dst.Values[i] = min + } + return tss[:1] +} + +func aggrFuncMax(tss []*timeseries) []*timeseries { + if len(tss) == 1 { + // Fast path - nothing to max. + return tss + } + dst := tss[0] + for i := range dst.Values { + max := dst.Values[i] + for _, ts := range tss { + if math.IsNaN(max) || ts.Values[i] > max { + max = ts.Values[i] + } + } + dst.Values[i] = max + } + return tss[:1] +} + +func aggrFuncAvg(tss []*timeseries) []*timeseries { + if len(tss) == 1 { + // Fast path - nothing to avg. + return tss + } + dst := tss[0] + for i := range dst.Values { + // Do not use `Rapid calculation methods` at https://en.wikipedia.org/wiki/Standard_deviation, + // since it is slower and has no obvious benefits in increased precision. + var sum float64 + count := 0 + for _, ts := range tss { + v := ts.Values[i] + if math.IsNaN(v) { + continue + } + count++ + sum += v + } + avg := nan + if count > 0 { + avg = sum / float64(count) + } + dst.Values[i] = avg + } + return tss[:1] +} + +func aggrFuncStddev(tss []*timeseries) []*timeseries { + if len(tss) == 1 { + // Fast path - stddev over a single time series is zero + values := tss[0].Values + for i, v := range values { + if !math.IsNaN(v) { + values[i] = 0 + } + } + return tss + } + rvs := aggrFuncStdvar(tss) + dst := rvs[0] + for i, v := range dst.Values { + dst.Values[i] = math.Sqrt(v) + } + return rvs +} + +func aggrFuncStdvar(tss []*timeseries) []*timeseries { + if len(tss) == 1 { + // Fast path - stdvar over a single time series is zero + values := tss[0].Values + for i, v := range values { + if !math.IsNaN(v) { + values[i] = 0 + } + } + return tss + } + dst := tss[0] + for i := range dst.Values { + // See `Rapid calculation methods` at https://en.wikipedia.org/wiki/Standard_deviation + var avg float64 + var count float64 + var q float64 + for _, ts := range tss { + v := ts.Values[i] + if math.IsNaN(v) { + continue + } + count++ + avgNew := avg + (v-avg)/count + q += (v - avg) * (v - avgNew) + avg = avgNew + } + if count == 0 { + q = nan + } + dst.Values[i] = q / count + } + return tss[:1] +} + +func aggrFuncCount(tss []*timeseries) []*timeseries { + dst := tss[0] + for i := range dst.Values { + count := 0 + for _, ts := range tss { + if math.IsNaN(ts.Values[i]) { + continue + } + count++ + } + dst.Values[i] = float64(count) + } + return tss[:1] +} + +func aggrFuncDistinct(tss []*timeseries) []*timeseries { + dst := tss[0] + m := make(map[float64]struct{}, len(tss)) + for i := range dst.Values { + for _, ts := range tss { + v := ts.Values[i] + if math.IsNaN(v) { + continue + } + m[v] = struct{}{} + } + n := float64(len(m)) + if n == 0 { + n = nan + } + dst.Values[i] = n + for k := range m { + delete(m, k) + } + } + return tss[:1] +} + +func aggrFuncCountValues(afa *aggrFuncArg) ([]*timeseries, error) { + args := afa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + dstLabel, err := getString(args[0], 0) + if err != nil { + return nil, err + } + afe := func(tss []*timeseries) []*timeseries { + m := make(map[float64]bool) + for _, ts := range tss { + for _, v := range ts.Values { + m[v] = true + } + } + values := make([]float64, 0, len(m)) + for v := range m { + values = append(values, v) + } + sort.Float64s(values) + + var rvs []*timeseries + for _, v := range values { + var dst timeseries + dst.CopyFrom(tss[0]) + dst.MetricName.RemoveTag(dstLabel) + dst.MetricName.AddTag(dstLabel, strconv.FormatFloat(v, 'g', -1, 64)) + for i := range dst.Values { + count := 0 + for _, ts := range tss { + if ts.Values[i] == v { + count++ + } + } + n := float64(count) + if n == 0 { + n = nan + } + dst.Values[i] = n + } + rvs = append(rvs, &dst) + } + return rvs + } + return aggrFuncExt(afe, args[1], &afa.ae.Modifier, false) +} + +func newAggrFuncTopK(isReverse bool) aggrFunc { + return func(afa *aggrFuncArg) ([]*timeseries, error) { + args := afa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + ks, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + afe := func(tss []*timeseries) []*timeseries { + rvs := tss + for n := range rvs[0].Values { + sort.Slice(rvs, func(i, j int) bool { + a := rvs[i].Values[n] + b := rvs[j].Values[n] + cmp := lessWithNaNs(a, b) + if isReverse { + cmp = !cmp + } + return cmp + }) + if math.IsNaN(ks[n]) { + ks[n] = 0 + } + k := int(ks[n]) + if k < 0 { + k = 0 + } + if k > len(rvs) { + k = len(rvs) + } + for _, ts := range rvs[:len(rvs)-k] { + ts.Values[n] = nan + } + } + return rvs + } + return aggrFuncExt(afe, args[1], &afa.ae.Modifier, true) + } +} + +func aggrFuncLimitK(afa *aggrFuncArg) ([]*timeseries, error) { + args := afa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + ks, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + maxK := 0 + for _, kf := range ks { + k := int(kf) + if k > maxK { + maxK = k + } + } + afe := func(tss []*timeseries) []*timeseries { + if len(tss) > maxK { + tss = tss[:maxK] + } + for i, kf := range ks { + k := int(kf) + if k < 0 { + k = 0 + } + for j := k; j < len(tss); j++ { + tss[j].Values[i] = nan + } + } + return tss + } + return aggrFuncExt(afe, args[1], &afa.ae.Modifier, true) +} + +func aggrFuncQuantile(afa *aggrFuncArg) ([]*timeseries, error) { + args := afa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + phis, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + afe := newAggrQuantileFunc(phis) + return aggrFuncExt(afe, args[1], &afa.ae.Modifier, false) +} + +func aggrFuncMedian(afa *aggrFuncArg) ([]*timeseries, error) { + args := afa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + phis := evalNumber(afa.ec, 0.5)[0].Values + afe := newAggrQuantileFunc(phis) + return aggrFuncExt(afe, args[0], &afa.ae.Modifier, false) +} + +func newAggrQuantileFunc(phis []float64) func(tss []*timeseries) []*timeseries { + return func(tss []*timeseries) []*timeseries { + dst := tss[0] + for n := range dst.Values { + sort.Slice(tss, func(i, j int) bool { + a := tss[i].Values[n] + b := tss[j].Values[n] + return lessWithNaNs(a, b) + }) + phi := phis[n] + if math.IsNaN(phi) { + phi = 1 + } + if phi < 0 { + phi = 0 + } + if phi > 1 { + phi = 1 + } + idx := int(math.Round(float64(len(tss)-1) * phi)) + dst.Values[n] = tss[idx].Values[n] + } + return tss[:1] + } +} + +func lessWithNaNs(a, b float64) bool { + if math.IsNaN(a) { + return !math.IsNaN(b) + } + return a < b +} diff --git a/app/vmselect/promql/aggr_test.go b/app/vmselect/promql/aggr_test.go new file mode 100644 index 000000000..978baddd0 --- /dev/null +++ b/app/vmselect/promql/aggr_test.go @@ -0,0 +1,30 @@ +package promql + +import ( + "testing" +) + +func TestIsAggrFuncModifierSuccess(t *testing.T) { + f := func(s string) { + t.Helper() + if !isAggrFuncModifier(s) { + t.Fatalf("expecting valid funcModifier: %q", s) + } + } + f("by") + f("BY") + f("without") + f("Without") +} + +func TestIsAggrFuncModifierError(t *testing.T) { + f := func(s string) { + t.Helper() + if isAggrFuncModifier(s) { + t.Fatalf("unexpected valid funcModifier: %q", s) + } + } + f("byfix") + f("on") + f("ignoring") +} diff --git a/app/vmselect/promql/arch_amd64.go b/app/vmselect/promql/arch_amd64.go new file mode 100644 index 000000000..e26cfda4d --- /dev/null +++ b/app/vmselect/promql/arch_amd64.go @@ -0,0 +1,3 @@ +package promql + +const maxByteSliceLen = 1 << 40 diff --git a/app/vmselect/promql/arch_arm.go b/app/vmselect/promql/arch_arm.go new file mode 100644 index 000000000..1399daa3b --- /dev/null +++ b/app/vmselect/promql/arch_arm.go @@ -0,0 +1,3 @@ +package promql + +const maxByteSliceLen = 1<<31 - 1 diff --git a/app/vmselect/promql/binary_op.go b/app/vmselect/promql/binary_op.go new file mode 100644 index 000000000..d5e15e0b8 --- /dev/null +++ b/app/vmselect/promql/binary_op.go @@ -0,0 +1,499 @@ +package promql + +import ( + "fmt" + "math" + "strings" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +var binaryOpFuncs = map[string]binaryOpFunc{ + "+": newBinaryOpArithFunc(binaryOpPlus), + "-": newBinaryOpArithFunc(binaryOpMinus), + "*": newBinaryOpArithFunc(binaryOpMul), + "/": newBinaryOpArithFunc(binaryOpDiv), + "%": newBinaryOpArithFunc(binaryOpMod), + "^": newBinaryOpArithFunc(binaryOpPow), + + // cmp ops + "==": newBinaryOpCmpFunc(binaryOpEq), + "!=": newBinaryOpCmpFunc(binaryOpNeq), + ">": newBinaryOpCmpFunc(binaryOpGt), + "<": newBinaryOpCmpFunc(binaryOpLt), + ">=": newBinaryOpCmpFunc(binaryOpGte), + "<=": newBinaryOpCmpFunc(binaryOpLte), + + // logical set ops + "and": binaryOpAnd, + "or": binaryOpOr, + "unless": binaryOpUnless, + + // New op + "if": newBinaryOpArithFunc(binaryOpIf), + "ifnot": newBinaryOpArithFunc(binaryOpIfnot), + "default": newBinaryOpArithFunc(binaryOpDefault), +} + +var binaryOpPriorities = map[string]int{ + "default": -1, + + "if": 0, + "ifnot": 0, + + // See https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operator-precedence + "or": 1, + + "and": 2, + "unless": 2, + + "==": 3, + "!=": 3, + "<": 3, + ">": 3, + "<=": 3, + ">=": 3, + + "+": 4, + "-": 4, + + "*": 5, + "/": 5, + "%": 5, + + "^": 6, +} + +func getBinaryOpFunc(op string) binaryOpFunc { + op = strings.ToLower(op) + return binaryOpFuncs[op] +} + +func isBinaryOp(op string) bool { + return getBinaryOpFunc(op) != nil +} + +func binaryOpPriority(op string) int { + op = strings.ToLower(op) + return binaryOpPriorities[op] +} + +func scanBinaryOpPrefix(s string) int { + n := 0 + for op := range binaryOpFuncs { + if len(s) < len(op) { + continue + } + ss := strings.ToLower(s[:len(op)]) + if ss == op && len(op) > n { + n = len(op) + } + } + return n +} + +func isRightAssociativeBinaryOp(op string) bool { + // See https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operator-precedence + return op == "^" +} + +func isBinaryOpGroupModifier(s string) bool { + s = strings.ToLower(s) + switch s { + // See https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching + case "on", "ignoring": + return true + default: + return false + } +} + +func isBinaryOpJoinModifier(s string) bool { + s = strings.ToLower(s) + switch s { + case "group_left", "group_right": + return true + default: + return false + } +} + +func isBinaryOpBoolModifier(s string) bool { + s = strings.ToLower(s) + return s == "bool" +} + +func isBinaryOpCmp(op string) bool { + switch op { + case "==", "!=", ">", "<", ">=", "<=": + return true + default: + return false + } +} + +func isBinaryOpLogicalSet(op string) bool { + op = strings.ToLower(op) + switch op { + case "and", "or", "unless": + return true + default: + return false + } +} + +func binaryOpConstants(op string, left, right float64, isBool bool) float64 { + if isBinaryOpCmp(op) { + evalCmp := func(cf func(left, right float64) bool) float64 { + if isBool { + if cf(left, right) { + return 1 + } + return 0 + } + if cf(left, right) { + return left + } + return nan + } + switch op { + case "==": + left = evalCmp(binaryOpEq) + case "!=": + left = evalCmp(binaryOpNeq) + case ">": + left = evalCmp(binaryOpGt) + case "<": + left = evalCmp(binaryOpLt) + case ">=": + left = evalCmp(binaryOpGte) + case "<=": + left = evalCmp(binaryOpLte) + default: + logger.Panicf("BUG: unexpected comparison binaryOp: %q", op) + } + } else { + switch op { + case "+": + left = binaryOpPlus(left, right) + case "-": + left = binaryOpMinus(left, right) + case "*": + left = binaryOpMul(left, right) + case "/": + left = binaryOpDiv(left, right) + case "%": + left = binaryOpMod(left, right) + case "^": + left = binaryOpPow(left, right) + case "and": + // Nothing to do + case "or": + // Nothing to do + case "unless": + left = nan + case "default": + left = binaryOpDefault(left, right) + case "if": + left = binaryOpIf(left, right) + case "ifnot": + left = binaryOpIfnot(left, right) + default: + logger.Panicf("BUG: unexpected non-comparison binaryOp: %q", op) + } + } + return left +} + +type binaryOpFuncArg struct { + be *binaryOpExpr + left []*timeseries + right []*timeseries +} + +type binaryOpFunc func(bfa *binaryOpFuncArg) ([]*timeseries, error) + +func newBinaryOpCmpFunc(cf func(left, right float64) bool) binaryOpFunc { + cfe := func(left, right float64, isBool bool) float64 { + if !isBool { + if cf(left, right) { + return left + } + return nan + } + if cf(left, right) { + return 1 + } + return 0 + } + return newBinaryOpFunc(cfe) +} + +func newBinaryOpArithFunc(af func(left, right float64) float64) binaryOpFunc { + afe := func(left, right float64, isBool bool) float64 { + return af(left, right) + } + return newBinaryOpFunc(afe) +} + +func newBinaryOpFunc(bf func(left, right float64, isBool bool) float64) binaryOpFunc { + return func(bfa *binaryOpFuncArg) ([]*timeseries, error) { + isBool := bfa.be.Bool + left, right, dst, err := adjustBinaryOpTags(bfa.be, bfa.left, bfa.right) + if err != nil { + return nil, err + } + if len(left) != len(right) || len(left) != len(dst) { + logger.Panicf("BUG: len(left) must match len(right) and len(dst); got %d vs %d vs %d", len(left), len(right), len(dst)) + } + for i, tsLeft := range left { + leftValues := tsLeft.Values + rightValues := right[i].Values + dstValues := dst[i].Values + if len(leftValues) != len(rightValues) || len(leftValues) != len(dstValues) { + logger.Panicf("BUG: len(leftVaues) must match len(rightValues) and len(dstValues); got %d vs %d vs %d", + len(leftValues), len(rightValues), len(dstValues)) + } + for j, a := range leftValues { + b := rightValues[j] + dstValues[j] = bf(a, b, isBool) + } + } + return dst, nil + } +} + +func adjustBinaryOpTags(be *binaryOpExpr, left, right []*timeseries) ([]*timeseries, []*timeseries, []*timeseries, error) { + if len(be.GroupModifier.Op) == 0 && len(be.JoinModifier.Op) == 0 { + if isScalar(left) { + // Fast path: `scalar op vector` + rvsLeft := make([]*timeseries, len(right)) + tsLeft := left[0] + for i, tsRight := range right { + tsRight.MetricName.ResetMetricGroup() + rvsLeft[i] = tsLeft + } + return rvsLeft, right, right, nil + } + if isScalar(right) { + // Fast path: `vector op scalar` + rvsRight := make([]*timeseries, len(left)) + tsRight := right[0] + for i, tsLeft := range left { + tsLeft.MetricName.ResetMetricGroup() + rvsRight[i] = tsRight + } + return left, rvsRight, left, nil + } + } + + // Slow path: `vector op vector` or `a op {on|ignoring} {group_left|group_right} b` + ensureOneX := func(side string, tss []*timeseries) error { + if len(tss) == 0 { + logger.Panicf("BUG: tss must contain at least one value") + } + if len(tss) == 1 { + return nil + } + return fmt.Errorf(`duplicate timeseries on the %s side of %q: %s %s`, side, be.Op, stringMetricTags(&tss[0].MetricName), be.GroupModifier.AppendString(nil)) + } + var rvsLeft, rvsRight []*timeseries + mLeft, mRight := createTimeseriesMapByTagSet(be, left, right) + joinOp := strings.ToLower(be.JoinModifier.Op) + joinTags := be.JoinModifier.Args + for k, tssLeft := range mLeft { + tssRight := mRight[k] + if len(tssRight) == 0 { + continue + } + switch joinOp { + case "group_left": + if err := ensureOneX("right", tssRight); err != nil { + return nil, nil, nil, err + } + src := tssRight[0] + for _, ts := range tssLeft { + ts.MetricName.AddMissingTags(joinTags, &src.MetricName) + rvsLeft = append(rvsLeft, ts) + rvsRight = append(rvsRight, src) + } + case "group_right": + if err := ensureOneX("left", tssLeft); err != nil { + return nil, nil, nil, err + } + src := tssLeft[0] + for _, ts := range tssRight { + ts.MetricName.AddMissingTags(joinTags, &src.MetricName) + rvsLeft = append(rvsLeft, src) + rvsRight = append(rvsRight, ts) + } + case "": + if err := ensureOneX("left", tssLeft); err != nil { + return nil, nil, nil, err + } + if err := ensureOneX("right", tssRight); err != nil { + return nil, nil, nil, err + } + tssLeft[0].MetricName.ResetMetricGroup() + rvsLeft = append(rvsLeft, tssLeft[0]) + rvsRight = append(rvsRight, tssRight[0]) + default: + return nil, nil, nil, fmt.Errorf(`unexpected join modifier %q`, joinOp) + } + } + dst := rvsLeft + if joinOp == "group_right" { + dst = rvsRight + } + return rvsLeft, rvsRight, dst, nil +} + +func binaryOpPlus(left, right float64) float64 { + return left + right +} + +func binaryOpMinus(left, right float64) float64 { + return left - right +} + +func binaryOpMul(left, right float64) float64 { + return left * right +} + +func binaryOpDiv(left, right float64) float64 { + return left / right +} + +func binaryOpMod(left, right float64) float64 { + return math.Mod(left, right) +} + +func binaryOpPow(left, right float64) float64 { + return math.Pow(left, right) +} + +func binaryOpDefault(left, right float64) float64 { + if math.IsNaN(left) { + return right + } + return left +} + +func binaryOpIf(left, right float64) float64 { + if math.IsNaN(right) { + return nan + } + return left +} + +func binaryOpIfnot(left, right float64) float64 { + if math.IsNaN(right) { + return left + } + return nan +} + +func binaryOpEq(left, right float64) bool { + return left == right +} + +func binaryOpNeq(left, right float64) bool { + return left != right +} + +func binaryOpGt(left, right float64) bool { + return left > right +} + +func binaryOpLt(left, right float64) bool { + return left < right +} + +func binaryOpGte(left, right float64) bool { + return left >= right +} + +func binaryOpLte(left, right float64) bool { + return left <= right +} + +func binaryOpAnd(bfa *binaryOpFuncArg) ([]*timeseries, error) { + mLeft, mRight := createTimeseriesMapByTagSet(bfa.be, bfa.left, bfa.right) + var rvs []*timeseries + for k := range mRight { + if tss := mLeft[k]; tss != nil { + rvs = append(rvs, tss...) + } + } + return rvs, nil +} + +func binaryOpOr(bfa *binaryOpFuncArg) ([]*timeseries, error) { + mLeft, mRight := createTimeseriesMapByTagSet(bfa.be, bfa.left, bfa.right) + var rvs []*timeseries + for _, tss := range mLeft { + rvs = append(rvs, tss...) + } + for k, tss := range mRight { + if mLeft[k] == nil { + rvs = append(rvs, tss...) + } + } + return rvs, nil +} + +func binaryOpUnless(bfa *binaryOpFuncArg) ([]*timeseries, error) { + mLeft, mRight := createTimeseriesMapByTagSet(bfa.be, bfa.left, bfa.right) + var rvs []*timeseries + for k, tss := range mLeft { + if mRight[k] == nil { + rvs = append(rvs, tss...) + } + } + return rvs, nil +} + +func createTimeseriesMapByTagSet(be *binaryOpExpr, left, right []*timeseries) (map[string][]*timeseries, map[string][]*timeseries) { + groupTags := be.GroupModifier.Args + groupOp := strings.ToLower(be.GroupModifier.Op) + if len(groupOp) == 0 { + groupOp = "ignoring" + } + getTagsMap := func(arg []*timeseries) map[string][]*timeseries { + bb := bbPool.Get() + m := make(map[string][]*timeseries, len(arg)) + mn := storage.GetMetricName() + for _, ts := range arg { + mn.CopyFrom(&ts.MetricName) + mn.ResetMetricGroup() + switch groupOp { + case "on": + mn.RemoveTagsOn(groupTags) + case "ignoring": + mn.RemoveTagsIgnoring(groupTags) + default: + logger.Panicf("BUG: unexpected binary op modifier %q", groupOp) + } + bb.B = marshalMetricTagsSorted(bb.B[:0], mn) + m[string(bb.B)] = append(m[string(bb.B)], ts) + } + storage.PutMetricName(mn) + bbPool.Put(bb) + return m + } + mLeft := getTagsMap(left) + mRight := getTagsMap(right) + return mLeft, mRight +} + +func isScalar(arg []*timeseries) bool { + if len(arg) != 1 { + return false + } + mn := &arg[0].MetricName + if len(mn.MetricGroup) > 0 { + return false + } + return len(mn.Tags) == 0 +} diff --git a/app/vmselect/promql/binary_op_test.go b/app/vmselect/promql/binary_op_test.go new file mode 100644 index 000000000..c07bfbb21 --- /dev/null +++ b/app/vmselect/promql/binary_op_test.go @@ -0,0 +1,125 @@ +package promql + +import ( + "testing" +) + +func TestIsBinaryOpSuccess(t *testing.T) { + f := func(s string) { + t.Helper() + if !isBinaryOp(s) { + t.Fatalf("expecting valid binaryOp: %q", s) + } + } + f("and") + f("AND") + f("unless") + f("unleSS") + f("==") + f("!=") + f(">=") + f("<=") + f("or") + f("Or") + f("+") + f("-") + f("*") + f("/") + f("%") + f("^") + f(">") + f("<") +} + +func TestIsBinaryOpError(t *testing.T) { + f := func(s string) { + t.Helper() + if isBinaryOp(s) { + t.Fatalf("unexpected valid binaryOp: %q", s) + } + } + f("foobar") + f("=~") + f("!~") + f("=") + f("<==") + f("234") +} + +func TestIsBinaryOpGroupModifierSuccess(t *testing.T) { + f := func(s string) { + t.Helper() + if !isBinaryOpGroupModifier(s) { + t.Fatalf("expecting valid binaryOpGroupModifier: %q", s) + } + } + f("on") + f("ON") + f("oN") + f("ignoring") + f("IGnoring") +} + +func TestIsBinaryOpGroupModifierError(t *testing.T) { + f := func(s string) { + t.Helper() + if isBinaryOpGroupModifier(s) { + t.Fatalf("unexpected valid binaryOpGroupModifier: %q", s) + } + } + f("off") + f("by") + f("without") + f("123") +} + +func TestIsBinaryOpJoinModifierSuccess(t *testing.T) { + f := func(s string) { + t.Helper() + if !isBinaryOpJoinModifier(s) { + t.Fatalf("expecting valid binaryOpJoinModifier: %q", s) + } + } + f("group_left") + f("group_right") + f("group_LEft") + f("GRoup_RighT") +} + +func TestIsBinaryOpJoinModifierError(t *testing.T) { + f := func(s string) { + t.Helper() + if isBinaryOpJoinModifier(s) { + t.Fatalf("unexpected valid binaryOpJoinModifier: %q", s) + } + } + f("on") + f("by") + f("without") + f("123") +} + +func TestIsBinaryOpBoolModifierSuccess(t *testing.T) { + f := func(s string) { + t.Helper() + if !isBinaryOpBoolModifier(s) { + t.Fatalf("expecting valid binaryOpBoolModifier: %q", s) + } + } + f("bool") + f("bOOL") + f("BOOL") +} + +func TestIsBinaryOpBoolModifierError(t *testing.T) { + f := func(s string) { + t.Helper() + if isBinaryOpBoolModifier(s) { + t.Fatalf("unexpected valid binaryOpBoolModifier: %q", s) + } + } + f("on") + f("by") + f("without") + f("123") +} diff --git a/app/vmselect/promql/eval.go b/app/vmselect/promql/eval.go new file mode 100644 index 000000000..7a26d81f1 --- /dev/null +++ b/app/vmselect/promql/eval.go @@ -0,0 +1,655 @@ +package promql + +import ( + "flag" + "fmt" + "math" + "runtime" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/VictoriaMetrics/metrics" +) + +var ( + maxPointsPerTimeseries = flag.Int("search.maxPointsPerTimeseries", 10e3, "The maximum points per a single timeseries returned from the search") +) + +// The minumum number of points per timeseries for enabling time rounding. +// This improves cache hit ratio for frequently requested queries over +// big time ranges. +const minTimeseriesPointsForTimeRounding = 50 + +// ValidateMaxPointsPerTimeseries checks the maximum number of points that +// may be returned per each time series. +// +// The number mustn't exceed -search.maxPointsPerTimeseries. +func ValidateMaxPointsPerTimeseries(start, end, step int64) error { + points := (end-start)/step + 1 + if uint64(points) > uint64(*maxPointsPerTimeseries) { + return fmt.Errorf(`too many points for the given step=%d, start=%d and end=%d: %d; cannot exceed %d points`, + step, start, end, uint64(points), *maxPointsPerTimeseries) + } + return nil +} + +// AdjustStartEnd adjusts start and end values, so response caching may be enabled. +// +// See EvalConfig.mayCache for details. +func AdjustStartEnd(start, end, step int64) (int64, int64) { + points := (end-start)/step + 1 + if points < minTimeseriesPointsForTimeRounding { + // Too small number of points for rounding. + return start, end + } + + // Round start and end to values divisible by step in order + // to enable response caching (see EvalConfig.mayCache). + + // Round start to the nearest smaller value divisible by step. + start -= start % step + // Round end to the nearest bigger value divisible by step. + adjust := end % step + if adjust > 0 { + end += step - adjust + } + return start, end +} + +// EvalConfig is the configuration required for query evaluation via Exec +type EvalConfig struct { + Start int64 + End int64 + Step int64 + + Deadline netstorage.Deadline + + MayCache bool + + timestamps []int64 + timestampsOnce sync.Once +} + +// newEvalConfig returns new EvalConfig copy from src. +func newEvalConfig(src *EvalConfig) *EvalConfig { + var ec EvalConfig + ec.Start = src.Start + ec.End = src.End + ec.Step = src.Step + ec.Deadline = src.Deadline + ec.MayCache = src.MayCache + + // do not copy src.timestamps - they must be generated again. + return &ec +} + +func (ec *EvalConfig) validate() { + if ec.Start > ec.End { + logger.Panicf("BUG: start cannot exceed end; got %d vs %d", ec.Start, ec.End) + } + if ec.Step <= 0 { + logger.Panicf("BUG: step must be greater than 0; got %d", ec.Step) + } +} + +func (ec *EvalConfig) mayCache() bool { + if !ec.MayCache { + return false + } + if ec.Start%ec.Step != 0 { + return false + } + if ec.End%ec.Step != 0 { + return false + } + return true +} + +func (ec *EvalConfig) getSharedTimestamps() []int64 { + ec.timestampsOnce.Do(ec.timestampsInit) + return ec.timestamps +} + +func (ec *EvalConfig) timestampsInit() { + ec.timestamps = getTimestamps(ec.Start, ec.End, ec.Step) +} + +func getTimestamps(start, end, step int64) []int64 { + // Sanity checks. + if step <= 0 { + logger.Panicf("BUG: Step must be bigger than 0; got %d", step) + } + if start > end { + logger.Panicf("BUG: Start cannot exceed End; got %d vs %d", start, end) + } + if err := ValidateMaxPointsPerTimeseries(start, end, step); err != nil { + logger.Panicf("BUG: %s; this must be validated before the call to getTimestamps", err) + } + + // Prepare timestamps. + points := 1 + (end-start)/step + timestamps := make([]int64, points) + for i := range timestamps { + timestamps[i] = start + start += step + } + return timestamps +} + +func evalExpr(ec *EvalConfig, e expr) ([]*timeseries, error) { + if me, ok := e.(*metricExpr); ok { + re := &rollupExpr{ + Expr: me, + } + rv, err := evalRollupFunc(ec, "default_rollup", rollupDefault, re) + if err != nil { + return nil, fmt.Errorf(`cannot evaluate %q: %s`, me.AppendString(nil), err) + } + return rv, nil + } + if re, ok := e.(*rollupExpr); ok { + rv, err := evalRollupFunc(ec, "default_rollup", rollupDefault, re) + if err != nil { + return nil, fmt.Errorf(`cannot evaluate %q: %s`, re.AppendString(nil), err) + } + return rv, nil + } + if fe, ok := e.(*funcExpr); ok { + nrf := getRollupFunc(fe.Name) + if nrf == nil { + args, err := evalExprs(ec, fe.Args) + if err != nil { + return nil, err + } + tf := getTransformFunc(fe.Name) + if tf == nil { + return nil, fmt.Errorf(`unknown func %q`, fe.Name) + } + tfa := &transformFuncArg{ + ec: ec, + fe: fe, + args: args, + } + rv, err := tf(tfa) + if err != nil { + return nil, fmt.Errorf(`cannot evaluate %q: %s`, fe.AppendString(nil), err) + } + return rv, nil + } + args, re, err := evalRollupFuncArgs(ec, fe) + if err != nil { + return nil, err + } + rf, err := nrf(args) + if err != nil { + return nil, err + } + rv, err := evalRollupFunc(ec, fe.Name, rf, re) + if err != nil { + return nil, fmt.Errorf(`cannot evaluate %q: %s`, fe.AppendString(nil), err) + } + return rv, nil + } + if ae, ok := e.(*aggrFuncExpr); ok { + args, err := evalExprs(ec, ae.Args) + if err != nil { + return nil, err + } + af := getAggrFunc(ae.Name) + if af == nil { + return nil, fmt.Errorf(`unknown func %q`, ae.Name) + } + afa := &aggrFuncArg{ + ae: ae, + args: args, + ec: ec, + } + rv, err := af(afa) + if err != nil { + return nil, fmt.Errorf(`cannot evaluate %q: %s`, ae.AppendString(nil), err) + } + return rv, nil + } + if be, ok := e.(*binaryOpExpr); ok { + left, err := evalExpr(ec, be.Left) + if err != nil { + return nil, err + } + right, err := evalExpr(ec, be.Right) + if err != nil { + return nil, err + } + bf := getBinaryOpFunc(be.Op) + if bf == nil { + return nil, fmt.Errorf(`unknown binary op %q`, be.Op) + } + bfa := &binaryOpFuncArg{ + be: be, + left: left, + right: right, + } + rv, err := bf(bfa) + if err != nil { + return nil, fmt.Errorf(`cannot evaluate %q: %s`, be.AppendString(nil), err) + } + return rv, nil + } + if ne, ok := e.(*numberExpr); ok { + rv := evalNumber(ec, ne.N) + return rv, nil + } + if se, ok := e.(*stringExpr); ok { + rv := evalString(ec, se.S) + return rv, nil + } + return nil, fmt.Errorf("unexpected expression %q", e.AppendString(nil)) +} + +func evalExprs(ec *EvalConfig, es []expr) ([][]*timeseries, error) { + var rvs [][]*timeseries + for _, e := range es { + rv, err := evalExpr(ec, e) + if err != nil { + return nil, err + } + rvs = append(rvs, rv) + } + return rvs, nil +} + +func evalRollupFuncArgs(ec *EvalConfig, fe *funcExpr) ([]interface{}, *rollupExpr, error) { + var re *rollupExpr + rollupArgIdx := getRollupArgIdx(fe.Name) + args := make([]interface{}, len(fe.Args)) + for i, arg := range fe.Args { + if i == rollupArgIdx { + re = getRollupExprArg(arg) + args[i] = re + continue + } + ts, err := evalExpr(ec, arg) + if err != nil { + return nil, nil, fmt.Errorf("cannot evaluate arg #%d for %q: %s", i+1, fe.AppendString(nil), err) + } + args[i] = ts + } + return args, re, nil +} + +func getRollupExprArg(arg expr) *rollupExpr { + re, ok := arg.(*rollupExpr) + if !ok { + // Wrap non-rollup arg into rollupExpr. + return &rollupExpr{ + Expr: arg, + } + } + if len(re.Step) == 0 && !re.InheritStep { + // Return standard rollup if it doesn't set step. + return re + } + me, ok := re.Expr.(*metricExpr) + if !ok { + // arg contains subquery. + return re + } + // Convert me[w:step] -> default_rollup(me)[w:step] + reNew := *re + reNew.Expr = &funcExpr{ + Name: "default_rollup", + Args: []expr{ + &rollupExpr{Expr: me}, + }, + } + return &reNew +} + +func evalRollupFunc(ec *EvalConfig, name string, rf rollupFunc, re *rollupExpr) ([]*timeseries, error) { + ecNew := ec + var offset int64 + if len(re.Offset) > 0 { + var err error + offset, err = DurationValue(re.Offset, ec.Step) + if err != nil { + return nil, err + } + ecNew = newEvalConfig(ec) + ecNew.Start -= offset + ecNew.End -= offset + ecNew.Start, ecNew.End = AdjustStartEnd(ecNew.Start, ecNew.End, ecNew.Step) + } + var rvs []*timeseries + var err error + if me, ok := re.Expr.(*metricExpr); ok { + if me.IsEmpty() { + rvs = evalNumber(ecNew, nan) + } else { + var window int64 + if len(re.Window) > 0 { + window, err = DurationValue(re.Window, ec.Step) + if err != nil { + return nil, err + } + } + rvs, err = evalRollupFuncWithMetricExpr(ecNew, name, rf, me, window) + } + } else { + rvs, err = evalRollupFuncWithSubquery(ecNew, name, rf, re) + } + if err != nil { + return nil, err + } + if offset != 0 && len(rvs) > 0 { + // Make a copy of timestamps, since they may be used in other values. + srcTimestamps := rvs[0].Timestamps + dstTimestamps := append([]int64{}, srcTimestamps...) + for i := range dstTimestamps { + dstTimestamps[i] += offset + } + for _, ts := range rvs { + ts.Timestamps = dstTimestamps + } + } + return rvs, nil +} + +func evalRollupFuncWithSubquery(ec *EvalConfig, name string, rf rollupFunc, re *rollupExpr) ([]*timeseries, error) { + // Do not use rollupResultCacheV here, since it works only with metricExpr. + var step int64 + if len(re.Step) > 0 { + var err error + step, err = DurationValue(re.Step, ec.Step) + if err != nil { + return nil, err + } + } else { + step = ec.Step + } + var window int64 + if len(re.Window) > 0 { + var err error + window, err = DurationValue(re.Window, ec.Step) + if err != nil { + return nil, err + } + } + + ecSQ := newEvalConfig(ec) + ecSQ.Start -= window + maxSilenceInterval + ecSQ.End += step + ecSQ.Step = step + if err := ValidateMaxPointsPerTimeseries(ecSQ.Start, ecSQ.End, ecSQ.Step); err != nil { + return nil, err + } + ecSQ.Start, ecSQ.End = AdjustStartEnd(ecSQ.Start, ecSQ.End, ecSQ.Step) + tssSQ, err := evalExpr(ecSQ, re.Expr) + if err != nil { + return nil, err + } + + sharedTimestamps := getTimestamps(ec.Start, ec.End, ec.Step) + preFunc, rcs := getRollupConfigs(name, rf, ec.Start, ec.End, ec.Step, window, sharedTimestamps) + tss := make([]*timeseries, 0, len(tssSQ)*len(rcs)) + var tssLock sync.Mutex + doParallel(tssSQ, func(tsSQ *timeseries, values []float64, timestamps []int64) ([]float64, []int64) { + values, timestamps = removeNanValues(values[:0], timestamps[:0], tsSQ.Values, tsSQ.Timestamps) + preFunc(values, timestamps) + for _, rc := range rcs { + var ts timeseries + ts.MetricName.CopyFrom(&tsSQ.MetricName) + if len(rc.TagValue) > 0 { + ts.MetricName.AddTag("rollup", rc.TagValue) + } + ts.Values = rc.Do(ts.Values[:0], values, timestamps) + ts.Timestamps = sharedTimestamps + ts.denyReuse = true + tssLock.Lock() + tss = append(tss, &ts) + tssLock.Unlock() + } + return values, timestamps + }) + if !rollupFuncsKeepMetricGroup[name] { + tss = copyTimeseriesMetricNames(tss) + for _, ts := range tss { + ts.MetricName.ResetMetricGroup() + } + } + return tss, nil +} + +func doParallel(tss []*timeseries, f func(ts *timeseries, values []float64, timestamps []int64) ([]float64, []int64)) { + concurrency := runtime.GOMAXPROCS(-1) + if concurrency > len(tss) { + concurrency = len(tss) + } + workCh := make(chan *timeseries, concurrency) + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + go func() { + defer wg.Done() + var tmpValues []float64 + var tmpTimestamps []int64 + for ts := range workCh { + tmpValues, tmpTimestamps = f(ts, tmpValues, tmpTimestamps) + } + }() + } + for _, ts := range tss { + workCh <- ts + } + close(workCh) + wg.Wait() +} + +func removeNanValues(dstValues []float64, dstTimestamps []int64, values []float64, timestamps []int64) ([]float64, []int64) { + hasNan := false + for _, v := range values { + if math.IsNaN(v) { + hasNan = true + } + } + if !hasNan { + // Fast path - no NaNs. + dstValues = append(dstValues, values...) + dstTimestamps = append(dstTimestamps, timestamps...) + return dstValues, dstTimestamps + } + + // Slow path - remove NaNs. + for i, v := range values { + if math.IsNaN(v) { + continue + } + dstValues = append(dstValues, v) + dstTimestamps = append(dstTimestamps, timestamps[i]) + } + return dstValues, dstTimestamps +} + +func getMaxPointsPerRollup() int { + maxPointsPerRollupOnce.Do(func() { + n := memory.Allowed() / 16 / 8 + if n <= 16 { + n = 16 + } + maxPointsPerRollup = n + }) + return maxPointsPerRollup +} + +var ( + maxPointsPerRollup int + maxPointsPerRollupOnce sync.Once +) + +var ( + rollupResultCacheFullHits = metrics.NewCounter(`vm_rollup_result_cache_full_hits_total`) + rollupResultCachePartialHits = metrics.NewCounter(`vm_rollup_result_cache_partial_hits_total`) + rollupResultCacheMiss = metrics.NewCounter(`vm_rollup_result_cache_miss_total`) +) + +func evalRollupFuncWithMetricExpr(ec *EvalConfig, name string, rf rollupFunc, me *metricExpr, window int64) ([]*timeseries, error) { + // Search for partial results in cache. + tssCached, start := rollupResultCacheV.Get(name, ec, me, window) + if start > ec.End { + // The result is fully cached. + rollupResultCacheFullHits.Inc() + return tssCached, nil + } + if start > ec.Start { + rollupResultCachePartialHits.Inc() + } else { + rollupResultCacheMiss.Inc() + } + + // Fetch the remaining part of the result. + sq := &storage.SearchQuery{ + MinTimestamp: start - window - maxSilenceInterval, + MaxTimestamp: ec.End + ec.Step, + TagFilterss: [][]storage.TagFilter{me.TagFilters}, + } + rss, err := netstorage.ProcessSearchQuery(sq, ec.Deadline) + if err != nil { + return nil, err + } + rssLen := rss.Len() + if rssLen == 0 { + rss.Cancel() + // Add missing points until ec.End. + // Do not cache the result, since missing points + // may be backfilled in the future. + tss := mergeTimeseries(tssCached, nil, start, ec) + return tss, nil + } + sharedTimestamps := getTimestamps(start, ec.End, ec.Step) + preFunc, rcs := getRollupConfigs(name, rf, start, ec.End, ec.Step, window, sharedTimestamps) + + // Verify timeseries fit available memory after the rollup. + // Take into account points from tssCached. + pointsPerTimeseries := 1 + (ec.End-ec.Start)/ec.Step + if uint64(pointsPerTimeseries) > uint64(getMaxPointsPerRollup()/rssLen/len(rcs)) { + rss.Cancel() + return nil, fmt.Errorf("cannot process more than %d data points for %d time series with %d points in each time series; "+ + "possible solutions are: reducing the number of matching time series; switching to node with more RAM; increasing `step` query arg (%gs)", + getMaxPointsPerRollup(), rssLen*len(rcs), pointsPerTimeseries, float64(ec.Step)/1e3) + } + + // Evaluate rollup + tss := make([]*timeseries, 0, rssLen*len(rcs)) + var tssLock sync.Mutex + err = rss.RunParallel(func(rs *netstorage.Result) { + preFunc(rs.Values, rs.Timestamps) + for _, rc := range rcs { + var ts timeseries + ts.MetricName.CopyFrom(&rs.MetricName) + if len(rc.TagValue) > 0 { + ts.MetricName.AddTag("rollup", rc.TagValue) + } + ts.Values = rc.Do(ts.Values[:0], rs.Values, rs.Timestamps) + ts.Timestamps = sharedTimestamps + ts.denyReuse = true + + tssLock.Lock() + tss = append(tss, &ts) + tssLock.Unlock() + } + }) + if err != nil { + return nil, err + } + if !rollupFuncsKeepMetricGroup[name] { + tss = copyTimeseriesMetricNames(tss) + for _, ts := range tss { + ts.MetricName.ResetMetricGroup() + } + } + tss = mergeTimeseries(tssCached, tss, start, ec) + rollupResultCacheV.Put(name, ec, me, window, tss) + + return tss, nil +} + +func getRollupConfigs(name string, rf rollupFunc, start, end, step, window int64, sharedTimestamps []int64) (func(values []float64, timestamps []int64), []*rollupConfig) { + preFunc := func(values []float64, timestamps []int64) {} + if rollupFuncsRemoveCounterResets[name] { + preFunc = func(values []float64, timestamps []int64) { + removeCounterResets(values) + } + } + newRollupConfig := func(rf rollupFunc, tagValue string) *rollupConfig { + return &rollupConfig{ + TagValue: tagValue, + Func: rf, + Start: start, + End: end, + Step: step, + Window: window, + Timestamps: sharedTimestamps, + } + } + appendRollupConfigs := func(dst []*rollupConfig) []*rollupConfig { + dst = append(dst, newRollupConfig(rollupMin, "min")) + dst = append(dst, newRollupConfig(rollupMax, "max")) + dst = append(dst, newRollupConfig(rollupAvg, "avg")) + return dst + } + var rcs []*rollupConfig + switch name { + case "rollup": + rcs = appendRollupConfigs(rcs) + case "rollup_rate", "rollup_deriv": + preFuncPrev := preFunc + preFunc = func(values []float64, timestamps []int64) { + preFuncPrev(values, timestamps) + derivValues(values, timestamps) + } + rcs = appendRollupConfigs(rcs) + case "rollup_increase", "rollup_delta": + preFuncPrev := preFunc + preFunc = func(values []float64, timestamps []int64) { + preFuncPrev(values, timestamps) + deltaValues(values) + } + rcs = appendRollupConfigs(rcs) + default: + rcs = append(rcs, newRollupConfig(rf, "")) + } + return preFunc, rcs +} + +var bbPool bytesutil.ByteBufferPool + +func evalNumber(ec *EvalConfig, n float64) []*timeseries { + var ts timeseries + ts.denyReuse = true + timestamps := ec.getSharedTimestamps() + values := make([]float64, len(timestamps)) + for i := range timestamps { + values[i] = n + } + ts.Values = values + ts.Timestamps = timestamps + return []*timeseries{&ts} +} + +func evalString(ec *EvalConfig, s string) []*timeseries { + rv := evalNumber(ec, nan) + rv[0].MetricName.MetricGroup = append(rv[0].MetricName.MetricGroup[:0], s...) + return rv +} + +func evalTime(ec *EvalConfig) []*timeseries { + rv := evalNumber(ec, nan) + timestamps := rv[0].Timestamps + values := rv[0].Values + for i, ts := range timestamps { + values[i] = float64(ts) * 1e-3 + } + return rv +} diff --git a/app/vmselect/promql/exec.go b/app/vmselect/promql/exec.go new file mode 100644 index 000000000..d686f9008 --- /dev/null +++ b/app/vmselect/promql/exec.go @@ -0,0 +1,216 @@ +package promql + +import ( + "fmt" + "math" + "sort" + "sync" + "sync/atomic" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/metrics" +) + +// ExpandWithExprs expands WITH expressions inside q and returns the resulting +// PromQL without WITH expressions. +func ExpandWithExprs(q string) (string, error) { + e, err := parsePromQLWithCache(q) + if err != nil { + return "", err + } + buf := e.AppendString(nil) + return string(buf), nil +} + +// Exec executes q for the given ec until the deadline. +func Exec(ec *EvalConfig, q string) ([]netstorage.Result, error) { + ec.validate() + + e, err := parsePromQLWithCache(q) + if err != nil { + return nil, err + } + + // Add an additional point to the end. This point is used + // in calculating the last value for rate, deriv, increase + // and delta funcs. + ec.End += ec.Step + + rv, err := evalExpr(ec, e) + if err != nil { + return nil, err + } + + // Remove the additional point at the end. + for _, ts := range rv { + ts.Values = ts.Values[:len(ts.Values)-1] + + // ts.Timestamps may be shared between timeseries, so truncate it with len(ts.Values) instead of len(ts.Timestamps)-1 + ts.Timestamps = ts.Timestamps[:len(ts.Values)] + } + ec.End -= ec.Step + + maySort := maySortResults(e, rv) + result, err := timeseriesToResult(rv, maySort) + if err != nil { + return nil, err + } + return result, err +} + +func maySortResults(e expr, tss []*timeseries) bool { + if len(tss) > 100 { + // There is no sense in sorting a lot of results + return false + } + fe, ok := e.(*funcExpr) + if !ok { + return true + } + switch fe.Name { + case "sort", "sort_desc": + return false + default: + return true + } +} + +func timeseriesToResult(tss []*timeseries, maySort bool) ([]netstorage.Result, error) { + tss = removeNaNs(tss) + result := make([]netstorage.Result, len(tss)) + m := make(map[string]bool) + bb := bbPool.Get() + for i, ts := range tss { + bb.B = marshalMetricNameSorted(bb.B[:0], &ts.MetricName) + if m[string(bb.B)] { + return nil, fmt.Errorf(`duplicate output timeseries: %s%s`, ts.MetricName.MetricGroup, stringMetricName(&ts.MetricName)) + } + m[string(bb.B)] = true + + rs := &result[i] + rs.MetricNameMarshaled = append(rs.MetricNameMarshaled[:0], bb.B...) + rs.MetricName.CopyFrom(&ts.MetricName) + rs.Values = append(rs.Values[:0], ts.Values...) + rs.Timestamps = append(rs.Timestamps[:0], ts.Timestamps...) + } + bbPool.Put(bb) + + if maySort { + sort.Slice(result, func(i, j int) bool { + return string(result[i].MetricNameMarshaled) < string(result[j].MetricNameMarshaled) + }) + } + + return result, nil +} + +func removeNaNs(tss []*timeseries) []*timeseries { + rvs := tss[:0] + for _, ts := range tss { + nans := 0 + for _, v := range ts.Values { + if math.IsNaN(v) { + nans++ + } + } + if nans == len(ts.Values) { + // Skip timeseries with all NaNs. + continue + } + rvs = append(rvs, ts) + } + return rvs +} + +func parsePromQLWithCache(q string) (expr, error) { + pcv := parseCacheV.Get(q) + if pcv == nil { + e, err := parsePromQL(q) + pcv = &parseCacheValue{ + e: e, + err: err, + } + parseCacheV.Put(q, pcv) + } + if pcv.err != nil { + return nil, pcv.err + } + return pcv.e, nil +} + +var parseCacheV = func() *parseCache { + pc := &parseCache{ + m: make(map[string]*parseCacheValue), + } + metrics.NewGauge(`vm_cache_requests_total{type="promql/parse"}`, func() float64 { + return float64(pc.Requests()) + }) + metrics.NewGauge(`vm_cache_misses_total{type="promql/parse"}`, func() float64 { + return float64(pc.Misses()) + }) + metrics.NewGauge(`vm_cache_entries{type="promql/parse"}`, func() float64 { + return float64(pc.Len()) + }) + return pc +}() + +const parseCacheMaxLen = 10e3 + +type parseCacheValue struct { + e expr + err error +} + +type parseCache struct { + m map[string]*parseCacheValue + mu sync.RWMutex + + requests uint64 + misses uint64 +} + +func (pc *parseCache) Requests() uint64 { + return atomic.LoadUint64(&pc.requests) +} + +func (pc *parseCache) Misses() uint64 { + return atomic.LoadUint64(&pc.misses) +} + +func (pc *parseCache) Len() uint64 { + pc.mu.RLock() + n := len(pc.m) + pc.mu.RUnlock() + return uint64(n) +} + +func (pc *parseCache) Get(q string) *parseCacheValue { + atomic.AddUint64(&pc.requests, 1) + + pc.mu.RLock() + pcv := pc.m[q] + pc.mu.RUnlock() + + if pcv == nil { + atomic.AddUint64(&pc.misses, 1) + } + return pcv +} + +func (pc *parseCache) Put(q string, pcv *parseCacheValue) { + pc.mu.Lock() + overflow := len(pc.m) - parseCacheMaxLen + if overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(pc.m)) * 0.1) + for k := range pc.m { + delete(pc.m, k) + overflow-- + if overflow <= 0 { + break + } + } + } + pc.m[q] = pcv + pc.mu.Unlock() +} diff --git a/app/vmselect/promql/exec_test.go b/app/vmselect/promql/exec_test.go new file mode 100644 index 000000000..e683fcf02 --- /dev/null +++ b/app/vmselect/promql/exec_test.go @@ -0,0 +1,3593 @@ +package promql + +import ( + "testing" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/app/vmselect/netstorage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +func TestExpandWithExprsSuccess(t *testing.T) { + f := func(q, qExpected string) { + t.Helper() + for i := 0; i < 3; i++ { + qExpanded, err := ExpandWithExprs(q) + if err != nil { + t.Fatalf("unexpected error when expanding %q: %s", q, err) + } + if qExpanded != qExpected { + t.Fatalf("unexpected expanded expression for %q;\ngot\n%q\nwant\n%q", q, qExpanded, qExpected) + } + } + } + + f(`1`, `1`) + f(`foobar`, `foobar`) + f(`with (x = 1) x+x`, `2`) + f(`with (f(x) = x*x) 3+f(2)+2`, `9`) +} + +func TestExpandWithExprsError(t *testing.T) { + f := func(q string) { + t.Helper() + for i := 0; i < 3; i++ { + qExpanded, err := ExpandWithExprs(q) + if err == nil { + t.Fatalf("expecting non-nil error when expanding %q", q) + } + if qExpanded != "" { + t.Fatalf("unexpected non-empty qExpanded=%q", qExpanded) + } + } + } + + f(``) + f(` with (`) +} + +func TestExecSuccess(t *testing.T) { + start := int64(1000e3) + end := int64(2000e3) + step := int64(200e3) + timestampsExpected := []int64{1000e3, 1200e3, 1400e3, 1600e3, 1800e3, 2000e3} + metricNameExpected := storage.MetricName{} + + f := func(q string, resultExpected []netstorage.Result) { + t.Helper() + ec := &EvalConfig{ + Start: start, + End: end, + Step: step, + Deadline: netstorage.NewDeadline(time.Minute), + } + for i := 0; i < 5; i++ { + result, err := Exec(ec, q) + if err != nil { + t.Fatalf(`unexpected error when executing %q: %s`, q, err) + } + testResultsEqual(t, result, resultExpected) + } + } + + t.Run("simple-number", func(t *testing.T) { + t.Parallel() + q := `123` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 123, 123, 123}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("simple-arithmetic", func(t *testing.T) { + t.Parallel() + q := `-1+2 *3 ^ 4+5%6` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{166, 166, 166, 166, 166, 166}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("simple-string", func(t *testing.T) { + t.Parallel() + q := `"foobar"` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("simple-string-op-number", func(t *testing.T) { + t.Parallel() + q := `1+"foobar"*2%9` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("scalar-vector-arithmetic", func(t *testing.T) { + t.Parallel() + q := `scalar(-1)+2 *vector(3) ^ scalar(4)+5` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{166, 166, 166, 166, 166, 166}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("scalar-string-nonnum", func(t *testing.T) { + q := `scalar("fooobar")` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("scalar-string-num", func(t *testing.T) { + q := `scalar("-12.34")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-12.34, -12.34, -12.34, -12.34, -12.34, -12.34}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()", func(t *testing.T) { + t.Parallel() + q := `time()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time() offset 0s", func(t *testing.T) { + t.Parallel() + q := `time() offset 0s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{900, 1100, 1300, 1500, 1700, 1900}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("(a, b) offset 0s", func(t *testing.T) { + t.Parallel() + q := `sort((label_set(time(), "foo", "bar"), label_set(time()+10, "foo", "baz")) offset 0s)` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{900, 1100, 1300, 1500, 1700, 1900}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{910, 1110, 1310, 1510, 1710, 1910}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("baz"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run("time()[:100s] offset 0s", func(t *testing.T) { + t.Parallel() + q := `time()[:100s] offset 0s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time() offset 100s", func(t *testing.T) { + t.Parallel() + q := `time() offset 100s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{800, 1000, 1200, 1400, 1600, 1800}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("(a, b) offset 100s", func(t *testing.T) { + t.Parallel() + q := `sort((label_set(time(), "foo", "bar"), label_set(time()+10, "foo", "baz")) offset 100s)` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{800, 1000, 1200, 1400, 1600, 1800}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{810, 1010, 1210, 1410, 1610, 1810}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("baz"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run("(a offset 100s, b offset 50s)", func(t *testing.T) { + t.Parallel() + q := `sort((label_set(time() offset 100s, "foo", "bar"), label_set(time()+10, "foo", "baz") offset 50s))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{800, 1000, 1200, 1400, 1600, 1800}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{860, 1060, 1260, 1460, 1660, 1860}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("baz"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run("(a offset 100s, b offset 50s) offset 400s", func(t *testing.T) { + t.Parallel() + q := `sort((label_set(time() offset 100s, "foo", "bar"), label_set(time()+10, "foo", "baz") offset 50s) offset 400s)` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{300, 500, 700, 900, 1100, 1300}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{360, 560, 760, 960, 1160, 1360}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("baz"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run("time()[:100s] offset 100s", func(t *testing.T) { + t.Parallel() + q := `time()[:100s] offset 100s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{900, 1100, 1300, 1500, 1700, 1900}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()[300s:100s] offset 100s", func(t *testing.T) { + t.Parallel() + q := `time()[300s:100s] offset 100s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{800, 1000, 1200, 1400, 1600, 1800}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()[1.5i:0.5i] offset 0.5i", func(t *testing.T) { + t.Parallel() + q := `time()[1.5i:0.5i] offset 0.5i` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{800, 1000, 1200, 1400, 1600, 1800}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()[300s] offset 100s", func(t *testing.T) { + t.Parallel() + q := `time()[300s] offset 100s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{700, 900, 1100, 1300, 1500, 1700}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()[300s]", func(t *testing.T) { + t.Parallel() + q := `time()[300s]` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{800, 1000, 1200, 1400, 1600, 1800}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time() + time()", func(t *testing.T) { + t.Parallel() + q := `time() + time()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("timestamp(123)", func(t *testing.T) { + t.Parallel() + q := `timestamp(123)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("timestamp(time())", func(t *testing.T) { + t.Parallel() + q := `timestamp(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("timestamp(456/time()+123)", func(t *testing.T) { + t.Parallel() + q := `timestamp(456/time()+123)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()/100", func(t *testing.T) { + t.Parallel() + q := `time()/100` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 12, 14, 16, 18, 20}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("1e3/time()*2*9*7", func(t *testing.T) { + t.Parallel() + q := `1e3/time()*2*9*7` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{126, 105, 90, 78.75, 70, 63}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("minute()", func(t *testing.T) { + t.Parallel() + q := `minute()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{16, 20, 23, 26, 30, 33}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("day_of_month()", func(t *testing.T) { + t.Parallel() + q := `day_of_month(time()*1e4)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{26, 19, 12, 5, 28, 20}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("day_of_week()", func(t *testing.T) { + t.Parallel() + q := `day_of_week(time()*1e4)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 2, 5, 0, 2, 4}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("days_in_month()", func(t *testing.T) { + t.Parallel() + q := `days_in_month(time()*2e4)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{31, 31, 30, 31, 28, 30}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("hour()", func(t *testing.T) { + t.Parallel() + q := `hour(time()*1e4)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{17, 21, 0, 4, 8, 11}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("month()", func(t *testing.T) { + t.Parallel() + q := `month(time()*1e4)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4, 5, 6, 7, 7, 8}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("year()", func(t *testing.T) { + t.Parallel() + q := `year(time()*1e5)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1973, 1973, 1974, 1975, 1975, 1976}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("minute(30*60+time())", func(t *testing.T) { + t.Parallel() + q := `minute(30*60+time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{46, 50, 53, 56, 0, 3}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rate({})", func(t *testing.T) { + t.Parallel() + q := `rate({})` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("abs(1500-time())", func(t *testing.T) { + t.Parallel() + q := `abs(1500-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{500, 300, 100, 100, 300, 500}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("abs(-time()+1300)", func(t *testing.T) { + t.Parallel() + q := `abs(-time()+1300)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{300, 100, 100, 300, 500, 700}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("ceil(time() / 900)", func(t *testing.T) { + t.Parallel() + q := `ceil(time()/500)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 3, 3, 4, 4, 4}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("absent(time())", func(t *testing.T) { + t.Parallel() + q := `absent(time())` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("absent(123)", func(t *testing.T) { + t.Parallel() + q := `absent(123)` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("absent(vector(scalar(123)))", func(t *testing.T) { + t.Parallel() + q := `absent(vector(scalar(123)))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run("absent(NaN)", func(t *testing.T) { + t.Parallel() + q := `absent(NaN)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`absent(scalar(multi-timeseries))`, func(t *testing.T) { + t.Parallel() + q := ` + absent(label_set(scalar(1 or label_set(2, "xx", "foo")), "yy", "foo"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("yy"), + Value: []byte("foo"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("clamp_max(time(), 1400)", func(t *testing.T) { + t.Parallel() + q := `clamp_max(time(), 1400)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1400, 1400, 1400}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("clamp_min(time(), -time()+3000)", func(t *testing.T) { + t.Parallel() + q := `clamp_min(time(), -time()+2500)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1500, 1300, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("clamp_min(1500, time())", func(t *testing.T) { + t.Parallel() + q := `clamp_min(1500, time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1500, 1500, 1500, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("exp(time()/1e3)", func(t *testing.T) { + t.Parallel() + q := `exp(time()/1e3)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2.718281828459045, 3.3201169227365472, 4.0551999668446745, 4.953032424395115, 6.0496474644129465, 7.38905609893065}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rand()", func(t *testing.T) { + t.Parallel() + q := `round(rand()/2)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rand(0)", func(t *testing.T) { + t.Parallel() + q := `round(rand(0), 0.01)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0.95, 0.24, 0.66, 0.05, 0.37, 0.28}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rand_normal()", func(t *testing.T) { + t.Parallel() + q := `clamp_max(clamp_min(0, rand_normal()), 0)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rand_normal(0)", func(t *testing.T) { + t.Parallel() + q := `round(rand_normal(0), 0.01)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-0.28, 0.57, -1.69, 0.2, 1.92, 0.9}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rand_exponential()", func(t *testing.T) { + t.Parallel() + q := `clamp_max(clamp_min(0, rand_exponential()), 0)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("rand_exponential(0)", func(t *testing.T) { + t.Parallel() + q := `round(rand_exponential(0), 0.01)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4.67, 0.16, 3.05, 0.06, 1.86, 0.78}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("pi()", func(t *testing.T) { + t.Parallel() + q := `pi()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{3.141592653589793, 3.141592653589793, 3.141592653589793, 3.141592653589793, 3.141592653589793, 3.141592653589793}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("sin()", func(t *testing.T) { + t.Parallel() + q := `sin(pi()*(2000-time())/1000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1.2246467991473515e-16, 0.5877852522924732, 0.9510565162951536, 0.9510565162951535, 0.5877852522924731, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("asin()", func(t *testing.T) { + t.Parallel() + q := `asin((2000-time())/1000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1.5707963267948966, 0.9272952180016123, 0.6435011087932843, 0.41151684606748806, 0.20135792079033082, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("cos()", func(t *testing.T) { + t.Parallel() + q := `cos(pi()*(2000-time())/1000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-1, -0.8090169943749475, -0.30901699437494734, 0.30901699437494745, 0.8090169943749473, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("acos()", func(t *testing.T) { + t.Parallel() + q := `acos((2000-time())/1000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0.6435011087932843, 0.9272952180016123, 1.1592794807274085, 1.3694384060045657, 1.5707963267948966}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("floor(time()/500)", func(t *testing.T) { + t.Parallel() + q := `floor(time()/500)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 3, 3, 4}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("sqrt(time())", func(t *testing.T) { + t.Parallel() + q := `sqrt(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{31.622776601683793, 34.64101615137755, 37.416573867739416, 40, 42.42640687119285, 44.721359549995796}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("ln(time())", func(t *testing.T) { + t.Parallel() + q := `ln(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.907755278982137, 7.090076835776092, 7.24422751560335, 7.3777589082278725, 7.495541943884256, 7.600902459542082}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("log2(time())", func(t *testing.T) { + t.Parallel() + q := `log2(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{9.965784284662087, 10.228818690495881, 10.451211111832329, 10.643856189774725, 10.813781191217037, 10.965784284662087}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("log10(time())", func(t *testing.T) { + t.Parallel() + q := `log10(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{3, 3.0791812460476247, 3.1461280356782377, 3.2041199826559246, 3.255272505103306, 3.3010299956639813}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run("time()*-1^0.5", func(t *testing.T) { + t.Parallel() + q := `time()*-1^0.5` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`label_set(tag)`, func(t *testing.T) { + t.Parallel() + q := `label_set(time(), "tagname", "tagvalue")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("tagname"), + Value: []byte("tagvalue"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_set(metricname)`, func(t *testing.T) { + t.Parallel() + q := `label_set(time(), "__name__", "foobar")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("foobar") + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_set(metricname, tag)`, func(t *testing.T) { + t.Parallel() + q := `label_set( + label_set(time(), "__name__", "foobar"), + "tagname", "tagvalue" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("foobar") + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("tagname"), + Value: []byte("tagvalue"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_set(del_metricname)`, func(t *testing.T) { + t.Parallel() + q := `label_set( + label_set(time(), "__name__", "foobar"), + "__name__", "" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_set(del_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_set( + label_set(time(), "tagname", "foobar"), + "tagname", "" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_set(multi)`, func(t *testing.T) { + t.Parallel() + q := `label_set(time()+100, "t1", "v1", "t2", "v2", "__name__", "v3")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1100, 1300, 1500, 1700, 1900, 2100}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("v3") + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("t1"), + Value: []byte("v1"), + }, + { + Key: []byte("t2"), + Value: []byte("v2"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_copy(new_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_copy( + label_set(time(), "tagname", "foobar"), + "tagname", "xxx" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("tagname"), + Value: []byte("foobar"), + }, + { + Key: []byte("xxx"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_move(new_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_move( + label_set(time(), "tagname", "foobar"), + "tagname", "xxx" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_copy(same_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_copy( + label_set(time(), "tagname", "foobar"), + "tagname", "tagname" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("tagname"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_move(same_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_move( + label_set(time(), "tagname", "foobar"), + "tagname", "tagname" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("tagname"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_copy(same_tag_nonexisting_src)`, func(t *testing.T) { + t.Parallel() + q := `label_copy( + label_set(time(), "tagname", "foobar"), + "non-existing-tag", "tagname" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_move(same_tag_nonexisting_src)`, func(t *testing.T) { + t.Parallel() + q := `label_move( + label_set(time(), "tagname", "foobar"), + "non-existing-tag", "tagname" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_copy(existing_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_copy( + label_set(time(), "tagname", "foobar", "xx", "yy"), + "xx", "tagname" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("tagname"), + Value: []byte("yy"), + }, + { + Key: []byte("xx"), + Value: []byte("yy"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_move(existing_tag)`, func(t *testing.T) { + t.Parallel() + q := `label_move( + label_set(time(), "tagname", "foobar", "xx", "yy"), + "xx", "tagname" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("tagname"), + Value: []byte("yy"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_copy(from_metric_group)`, func(t *testing.T) { + t.Parallel() + q := `label_copy( + label_set(time(), "tagname", "foobar", "__name__", "yy"), + "__name__", "aa" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("yy") + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("aa"), + Value: []byte("yy"), + }, + { + Key: []byte("tagname"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_move(from_metric_group)`, func(t *testing.T) { + t.Parallel() + q := `label_move( + label_set(time(), "tagname", "foobar", "__name__", "yy"), + "__name__", "aa" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("aa"), + Value: []byte("yy"), + }, + { + Key: []byte("tagname"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_copy(to_metric_group)`, func(t *testing.T) { + t.Parallel() + q := `label_copy( + label_set(time(), "tagname", "foobar"), + "tagname", "__name__" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("foobar") + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("tagname"), + Value: []byte("foobar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_move(to_metric_group)`, func(t *testing.T) { + t.Parallel() + q := `label_move( + label_set(time(), "tagname", "foobar"), + "tagname", "__name__" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("foobar") + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_keep(nolabels)`, func(t *testing.T) { + t.Parallel() + q := `label_keep(time(), "foo", "bar")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_keep(certain_labels)`, func(t *testing.T) { + t.Parallel() + q := `label_keep(label_set(time(), "foo", "bar", "__name__", "xxx", "q", "we"), "foo", "nonexisting-label")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_keep(metricname)`, func(t *testing.T) { + t.Parallel() + q := `label_keep(label_set(time(), "foo", "bar", "__name__", "xxx", "q", "we"), "nonexisting-label", "__name__")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("xxx") + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_del(nolabels)`, func(t *testing.T) { + t.Parallel() + q := `label_del(time(), "foo", "bar")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_del(certain_labels)`, func(t *testing.T) { + t.Parallel() + q := `label_del(label_set(time(), "foo", "bar", "__name__", "xxx", "q", "we"), "foo", "nonexisting-label")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("xxx") + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("q"), + Value: []byte("we"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_del(metricname)`, func(t *testing.T) { + t.Parallel() + q := `label_del(label_set(time(), "foo", "bar", "__name__", "xxx", "q", "we"), "nonexisting-label", "__name__")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("foo"), + Value: []byte("bar"), + }, + { + Key: []byte("q"), + Value: []byte("we"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_join(empty)`, func(t *testing.T) { + t.Parallel() + q := `label_join(vector(time()), "tt", "(sep)", "BAR")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_join(tt)`, func(t *testing.T) { + t.Parallel() + q := `label_join(vector(time()), "tt", "(sep)", "foo", "BAR")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("tt"), + Value: []byte("(sep)"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_join(__name__)`, func(t *testing.T) { + t.Parallel() + q := `label_join(time(), "__name__", "(sep)", "foo", "BAR", "")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("(sep)(sep)") + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_join(label_join)`, func(t *testing.T) { + t.Parallel() + q := `label_join(label_join(time(), "__name__", "(sep)", "foo", "BAR"), "xxx", ",", "foobar", "__name__")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("(sep)") + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("xxx"), + Value: []byte(",(sep)"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_replace(mismatch)`, func(t *testing.T) { + t.Parallel() + q := `label_replace(time(), "__name__", "x${1}y", "foo", ".+")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_replace(match)`, func(t *testing.T) { + t.Parallel() + q := `label_replace(time(), "__name__", "x${1}y", "foo", ".*")` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("xy") + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`label_replace(label_replace)`, func(t *testing.T) { + t.Parallel() + q := ` + label_replace( + label_replace( + label_replace(time(), "__name__", "x${1}y", "foo", ".*"), + "xxx", "foo${1}bar(${1})", "__name__", "(.+)"), + "xxx", "AA$1", "xxx", "foox(.+)" + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("xy") + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("xxx"), + Value: []byte("AAybar(xy)"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`two_timeseries`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(time() or label_set(2, "xx", "foo"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("xx"), + Value: []byte("foo"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`round(time()/1e3)`, func(t *testing.T) { + t.Parallel() + q := `round(time()/1e3)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 2, 2, 2}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`round(time()/1e3, 0.5)`, func(t *testing.T) { + t.Parallel() + q := `round(time()/1e3, 0.5)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1.5, 1.5, 2, 2}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`round(-time()/1e3, 1)`, func(t *testing.T) { + t.Parallel() + q := `round(-time()/1e3, 0.5)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-1, -1, -1.5, -1.5, -2, -2}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`scalar(multi-timeseries)`, func(t *testing.T) { + t.Parallel() + q := `scalar(1 or label_set(2, "xx", "foo"))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`sort()`, func(t *testing.T) { + t.Parallel() + q := `sort(2 or label_set(1, "xx", "foo"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("xx"), + Value: []byte("foo"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`sort_desc()`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(1 or label_set(2, "xx", "foo"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("xx"), + Value: []byte("foo"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`1 > 2`, func(t *testing.T) { + t.Parallel() + q := `1 > 2` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`vector(1) == bool time()`, func(t *testing.T) { + t.Parallel() + q := `vector(1) == bool time()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector(1) == time()`, func(t *testing.T) { + t.Parallel() + q := `vector(1) == time()` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`-1 < 2`, func(t *testing.T) { + t.Parallel() + q := `-1 < 2` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-1, -1, -1, -1, -1, -1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`time() > 2`, func(t *testing.T) { + t.Parallel() + q := `time() > 2` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`time() >= bool 2`, func(t *testing.T) { + t.Parallel() + q := `time() >= bool 2` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`time() and 2`, func(t *testing.T) { + t.Parallel() + q := `time() and 2` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`time() unless 2`, func(t *testing.T) { + t.Parallel() + q := `time() unless 2` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`timseries-with-tags unless 2`, func(t *testing.T) { + t.Parallel() + q := `label_set(time(), "foo", "bar") unless 2` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`scalar default scalar`, func(t *testing.T) { + t.Parallel() + q := `time() > 1400 default 123` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector default scalar`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(union( + label_set(time() > 1400, "foo", "bar"), + label_set(time() < 1700, "foo", "baz")) default 123)` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 123, 123}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("baz"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`vector / scalar`, func(t *testing.T) { + t.Parallel() + q := `sort_desc((label_set(time(), "foo", "bar") or label_set(10, "foo", "qwert")) / 2)` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{500, 600, 700, 800, 900, 1000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{5, 5, 5, 5, 5, 5}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("qwert"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`vector * scalar`, func(t *testing.T) { + t.Parallel() + q := `sum(time()) * 2` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`scalar * vector`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(2 * (label_set(time(), "foo", "bar") or label_set(10, "foo", "qwert")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{20, 20, 20, 20, 20, 20}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("qwert"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`scalar * on() group_right vector`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(2 * on() group_right() (label_set(time(), "foo", "bar") or label_set(10, "foo", "qwert")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{20, 20, 20, 20, 20, 20}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("qwert"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`scalar * ignoring(foo) group_right vector`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(2 * ignoring(foo) group_right(a,foo) (label_set(time(), "foo", "bar") or label_set(10, "foo", "qwert")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{20, 20, 20, 20, 20, 20}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("qwert"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`scalar * ignoring(a) vector`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(label_set(2, "foo", "bar") * ignoring(a) (label_set(time(), "foo", "bar") or label_set(10, "foo", "qwert")))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`scalar * on(foo) vector`, func(t *testing.T) { + t.Parallel() + q := `sort_desc(label_set(2, "foo", "bar", "aa", "bb") * on(foo) (label_set(time(), "foo", "bar", "xx", "yy") or label_set(10, "foo", "qwert")))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("aa"), + Value: []byte("bb"), + }, + { + Key: []byte("foo"), + Value: []byte("bar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector * on(foo) scalar`, func(t *testing.T) { + t.Parallel() + q := `sort_desc((label_set(time(), "foo", "bar", "xx", "yy"), label_set(10, "foo", "qwert")) * on(foo) label_set(2, "foo","bar","aa","bb"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("foo"), + Value: []byte("bar"), + }, + { + Key: []byte("xx"), + Value: []byte("yy"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector * on() group_left scalar`, func(t *testing.T) { + t.Parallel() + q := `sort_desc((label_set(time(), "foo", "bar") or label_set(10, "foo", "qwert")) * on() group_left 2)` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{20, 20, 20, 20, 20, 20}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("qwert"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`vector + vector matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t1", "v1") or label_set(10, "t2", "v2")) + + + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v2")) + )` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1100, 1300, 1500, 1700, 1900, 2100}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("t1"), + Value: []byte("v1"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1010, 1210, 1410, 1610, 1810, 2010}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("t2"), + Value: []byte("v2"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`vector + vector partial matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t1", "v1") or label_set(10, "t2", "v2")) + + + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v3")) + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1100, 1300, 1500, 1700, 1900, 2100}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("t1"), + Value: []byte("v1"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector + vector no matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t2", "v1") or label_set(10, "t2", "v2")) + + + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v3")) + )` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`vector + vector on matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t1", "v123", "t2", "v3") or label_set(10, "t2", "v2")) + + on (foo, t2) + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v3")) + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("t1"), + Value: []byte("v123"), + }, + { + Key: []byte("t2"), + Value: []byte("v3"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector + vector on group_left matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t1", "v123", "t2", "v3") or label_set(10, "t2", "v3", "xxx", "yy")) + + on (foo, t2) group_left (t1, noxxx) + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v3", "noxxx", "aa")) + )` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{ + { + Key: []byte("noxxx"), + Value: []byte("aa"), + }, + { + Key: []byte("t1"), + Value: []byte("v123"), + }, + { + Key: []byte("t2"), + Value: []byte("v3"), + }, + } + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1010, 1210, 1410, 1610, 1810, 2010}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{ + { + Key: []byte("noxxx"), + Value: []byte("aa"), + }, + { + Key: []byte("t2"), + Value: []byte("v3"), + }, + { + Key: []byte("xxx"), + Value: []byte("yy"), + }, + } + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`vector + vector on group_left (__name__)`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (union(label_set(time(), "t2", "v3", "__name__", "vv3", "x", "y"), label_set(10, "t2", "v3", "__name__", "yy"))) + + on (t2, dfdf) group_left (__name__, xxx) + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v3", "__name__", "abc")) + )` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.MetricGroup = []byte("abc") + r1.MetricName.Tags = []storage.Tag{ + { + Key: []byte("t2"), + Value: []byte("v3"), + }, + { + Key: []byte("x"), + Value: []byte("y"), + }, + } + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1010, 1210, 1410, 1610, 1810, 2010}, + Timestamps: timestampsExpected, + } + r2.MetricName.MetricGroup = []byte("abc") + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("t2"), + Value: []byte("v3"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`vector + vector ignoring matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t1", "v123", "t2", "v3") or label_set(10, "t2", "v2")) + + ignoring (foo, t1, bar) + (label_set(100, "t1", "v1") or label_set(time(), "t2", "v3")) + )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("t1"), + Value: []byte("v123"), + }, + { + Key: []byte("t2"), + Value: []byte("v3"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`vector + vector ignoring group_right matching`, func(t *testing.T) { + t.Parallel() + q := `sort_desc( + (label_set(time(), "t1", "v123", "t2", "v3") or label_set(10, "t2", "v321", "t1", "v123", "t32", "v32")) + + ignoring (foo, t2) group_right () + (label_set(100, "t1", "v123") or label_set(time(), "t1", "v123", "t2", "v3")) + )` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2400, 2800, 3200, 3600, 4000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{ + { + Key: []byte("t1"), + Value: []byte("v123"), + }, + { + Key: []byte("t2"), + Value: []byte("v3"), + }, + } + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1100, 1300, 1500, 1700, 1900, 2100}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("t1"), + Value: []byte("v123"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`histogram_quantile(scalar)`, func(t *testing.T) { + t.Parallel() + q := `histogram_quantile(0.6, time())` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`histogram_quantile(single-value-no-le)`, func(t *testing.T) { + t.Parallel() + q := `histogram_quantile(0.6, label_set(100, "foo", "bar"))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`histogram_quantile(single-value-invalid-le)`, func(t *testing.T) { + t.Parallel() + q := `histogram_quantile(0.6, label_set(100, "le", "foobar"))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`histogram_quantile(single-value-valid-le)`, func(t *testing.T) { + t.Parallel() + q := `histogram_quantile(0.6, label_set(100, "le", "200"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{120, 120, 120, 120, 120, 120}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`histogram_quantile(scalar-phi)`, func(t *testing.T) { + t.Parallel() + q := `histogram_quantile(time() / 2 / 1e3, label_set(100, "le", "200"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{100, 120, 140, 160, 180, 200}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`histogram_quantile(valid)`, func(t *testing.T) { + t.Parallel() + q := `sort(histogram_quantile(0.6, + label_set(90, "foo", "bar", "le", "10") + or label_set(100, "foo", "bar", "le", "30") + or label_set(300, "foo", "bar", "le", "+Inf") + or label_set(200, "tag", "xx", "le", "10") + or label_set(300, "tag", "xx", "le", "30") + ))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{9, 9, 9, 9, 9, 9}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("tag"), + Value: []byte("xx"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{30, 30, 30, 30, 30, 30}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`median_over_time()`, func(t *testing.T) { + t.Parallel() + q := `median_over_time({})` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`sum(scalar)`, func(t *testing.T) { + t.Parallel() + q := `sum(123)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 123, 123, 123}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`sum(scalar) by ()`, func(t *testing.T) { + t.Parallel() + q := `sum(123) by ()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 123, 123, 123}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`sum(scalar) without ()`, func(t *testing.T) { + t.Parallel() + q := `sum(123) without ()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 123, 123, 123}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`avg(scalar) without (xx, yy)`, func(t *testing.T) { + t.Parallel() + q := `avg without (xx, yy) (123)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{123, 123, 123, 123, 123, 123}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`sum(time)`, func(t *testing.T) { + t.Parallel() + q := `sum(time()/100)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 12, 14, 16, 18, 20}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`sum(multi-vector)`, func(t *testing.T) { + t.Parallel() + q := `sum(label_set(10, "foo", "bar") or label_set(time()/100, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{20, 22, 24, 26, 28, 30}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`avg(multi-vector)`, func(t *testing.T) { + t.Parallel() + q := `avg(label_set(10, "foo", "bar") or label_set(time()/100, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 11, 12, 13, 14, 15}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`stddev(multi-vector)`, func(t *testing.T) { + t.Parallel() + q := `stddev(label_set(10, "foo", "bar") or label_set(time()/100, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 1, 2, 3, 4, 5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`count(multi-vector)`, func(t *testing.T) { + t.Parallel() + q := `count(label_set(10, "foo", "bar") or label_set((15-time()/100)^0.5, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`sum(multi-vector) by (known-tag)`, func(t *testing.T) { + t.Parallel() + q := `sort(sum(label_set(10, "foo", "bar") or label_set(time()/100, "baz", "sss")) by (foo))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 12, 14, 16, 18, 20}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`sum(multi-vector) by (known-tags)`, func(t *testing.T) { + t.Parallel() + q := `sum(label_set(10, "foo", "bar", "baz", "sss", "x", "y") or label_set(time()/100, "baz", "sss", "foo", "bar")) by (foo, baz, foo)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{20, 22, 24, 26, 28, 30}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{ + { + Key: []byte("baz"), + Value: []byte("sss"), + }, + { + Key: []byte("foo"), + Value: []byte("bar"), + }, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`sum(multi-vector) by (__name__)`, func(t *testing.T) { + t.Parallel() + q := `sort(sum(label_set(10, "__name__", "bar", "baz", "sss", "x", "y") or label_set(time()/100, "baz", "sss", "__name__", "aaa")) by (__name__))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r1.MetricName.MetricGroup = []byte("bar") + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 12, 14, 16, 18, 20}, + Timestamps: timestampsExpected, + } + r2.MetricName.MetricGroup = []byte("aaa") + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`min(multi-vector) by (unknown-tag)`, func(t *testing.T) { + t.Parallel() + q := `min(label_set(10, "foo", "bar") or label_set(time()/100/1.5, "baz", "sss")) by (unknowntag)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10, 10, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`max(multi-vector) by (unknown-tag)`, func(t *testing.T) { + t.Parallel() + q := `max(label_set(10, "foo", "bar") or label_set(time()/100/1.5, "baz", "sss")) by (unknowntag)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`limitk(-1)`, func(t *testing.T) { + t.Parallel() + q := `limitk(-1, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`limitk(1)`, func(t *testing.T) { + t.Parallel() + q := `limitk(1, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r1} + f(q, resultExpected) + }) + t.Run(`limitk(10)`, func(t *testing.T) { + t.Parallel() + q := `sort(limitk(10, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("baz"), + Value: []byte("sss"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`topk(-1)`, func(t *testing.T) { + t.Parallel() + q := `sort(topk(-1, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`topk(1)`, func(t *testing.T) { + t.Parallel() + q := `sort(topk(1, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, nan, nan, nan}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, nan, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("baz"), + Value: []byte("sss"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`topk(2)`, func(t *testing.T) { + t.Parallel() + q := `sort(topk(2, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("baz"), + Value: []byte("sss"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`topk(NaN)`, func(t *testing.T) { + t.Parallel() + q := `sort(topk(NaN, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`topk(100500)`, func(t *testing.T) { + t.Parallel() + q := `sort(topk(100500, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("baz"), + Value: []byte("sss"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`bottomk(1)`, func(t *testing.T) { + t.Parallel() + q := `sort(bottomk(1, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss")))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, nan, nan, nan}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("baz"), + Value: []byte("sss"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, nan, 10, 10, 10}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`keep_last_value()`, func(t *testing.T) { + t.Parallel() + q := `keep_last_value(label_set(time() < 1300 default time() > 1700, "__name__", "foobar", "x", "y"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1200, 1200, 1800, 2000}, + Timestamps: timestampsExpected, + } + r1.MetricName.MetricGroup = []byte("foobar") + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("x"), + Value: []byte("y"), + }} + resultExpected := []netstorage.Result{r1} + f(q, resultExpected) + }) + t.Run(`distinct_over_time([500s])`, func(t *testing.T) { + t.Parallel() + q := `distinct_over_time((time() < 1700)[500s])` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{3, 3, 3, 2, 1, nan}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r1} + f(q, resultExpected) + }) + t.Run(`distinct_over_time([2.5i])`, func(t *testing.T) { + t.Parallel() + q := `distinct_over_time((time() < 1700)[2.5i])` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{3, 3, 3, 2, 1, nan}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r1} + f(q, resultExpected) + }) + t.Run(`distinct()`, func(t *testing.T) { + t.Parallel() + q := `distinct(union( + 1+time() > 1100, + label_set(time() > 1700, "foo", "bar"), + ))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, 1, 1, 1, 2, 2}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r1} + f(q, resultExpected) + }) + t.Run(`if-default`, func(t *testing.T) { + t.Parallel() + q := `time() if time() > 1400 default -time()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-1000, -1200, -1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ifnot-default`, func(t *testing.T) { + t.Parallel() + q := `time() ifnot time() > 1400 default -time()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, -1600, -1800, -2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`quantile(-2)`, func(t *testing.T) { + t.Parallel() + q := `quantile(-2, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10, 10, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`quantile(0.2)`, func(t *testing.T) { + t.Parallel() + q := `quantile(0.2, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10, 10, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`quantile(0.5)`, func(t *testing.T) { + t.Parallel() + q := `quantile(0.5, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`median()`, func(t *testing.T) { + t.Parallel() + q := `median(label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`median(3-timeseries)`, func(t *testing.T) { + t.Parallel() + q := `median(union(label_set(10, "foo", "bar"), label_set(time()/150, "baz", "sss"), time()/200))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6.666666666666667, 8, 9.333333333333334, 10, 10, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`quantile(3)`, func(t *testing.T) { + t.Parallel() + q := `quantile(3, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`quantile(NaN)`, func(t *testing.T) { + t.Parallel() + q := `quantile(NaN, label_set(10, "foo", "bar") or label_set(time()/150, "baz", "sss"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{10, 10, 10, 10.666666666666666, 12, 13.333333333333334}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_quantile(0.5)`, func(t *testing.T) { + t.Parallel() + q := `range_quantile(0.5, time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1600, 1600, 1600, 1600, 1600, 1600}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_median()`, func(t *testing.T) { + t.Parallel() + q := `range_median(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1600, 1600, 1600, 1600, 1600, 1600}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ttf(2000-time())`, func(t *testing.T) { + t.Parallel() + q := `ttf(2000-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 866.6666666666666, 688.8888888888889, 496.2962962962963, 298.7654320987655, 99.58847736625516}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ttf(1000-time())`, func(t *testing.T) { + t.Parallel() + q := `ttf(1000-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ttf(1500-time())`, func(t *testing.T) { + t.Parallel() + q := `ttf(1500-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{500, 366.6666666666667, 188.8888888888889, 62.962962962962976, 20.987654320987662, 6.995884773662555}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ru(time(), 2000)`, func(t *testing.T) { + t.Parallel() + q := `ru(time(), 2000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{50, 40, 30, 20, 10, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ru(time() offset 100s, 2000)`, func(t *testing.T) { + t.Parallel() + q := `ru(time() offset 100s, 2000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{60, 50, 40, 30, 20, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ru(time() offset 0.5i, 2000)`, func(t *testing.T) { + t.Parallel() + q := `ru(time() offset 0.5i, 2000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{60, 50, 40, 30, 20, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ru(time() offset 1i, 2000)`, func(t *testing.T) { + t.Parallel() + q := `ru(time() offset 1i, 2000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{65, 55.00000000000001, 45, 35, 25, 15}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ru(time(), 1600)`, func(t *testing.T) { + t.Parallel() + q := `ru(time(), 1600)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{37.5, 25, 12.5, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`ru(1500-time(), 1000)`, func(t *testing.T) { + t.Parallel() + q := `ru(1500-time(), 1000)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{50, 70, 90, 100, 100, 100}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`integrate(1)`, func(t *testing.T) { + t.Parallel() + q := `integrate(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 200, 200, 200, 200, 200}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`integrate(time())`, func(t *testing.T) { + t.Parallel() + q := `integrate(time()*1e-3)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 240.00000000000003, 280, 320, 360, 400}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate(time())`, func(t *testing.T) { + t.Parallel() + q := `rate(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate(2000-time())`, func(t *testing.T) { + t.Parallel() + q := `rate(2000-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4.5, 3.5, 2.5, 1.5, 0.5, -0.5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate((2000-time())[100s])`, func(t *testing.T) { + t.Parallel() + q := `rate((2000-time())[100s])` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4.5, 3.5, 2.5, 1.5, 0.5, -0.5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate((2000-time())[100s:])`, func(t *testing.T) { + t.Parallel() + q := `rate((2000-time())[100s:])` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4.5, 3.5, 2.5, 1.5, 0.5, -0.5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate((2000-time())[100s:100s])`, func(t *testing.T) { + t.Parallel() + q := `rate((2000-time())[100s:100s])` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4, 6.5, 4.5, 2.5, 0.5, -1.5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate((2000-time())[100s:100s] offset 100s)`, func(t *testing.T) { + t.Parallel() + q := `rate((2000-time())[100s:100s] offset 100s)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{4.5, 3.5, 5.5, 3.5, 1.5, -0.5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rate((2000-time())[100s:100s] offset 100s)[:] offset 100s`, func(t *testing.T) { + t.Parallel() + q := `rate((2000-time())[100s:100s] offset 100s)[:] offset 100s` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{6, 5, 7.5, 5.5, 3.5, 1.5}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`increase(time())`, func(t *testing.T) { + t.Parallel() + q := `increase(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 200, 200, 200, 200, 200}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`increase(2000-time())`, func(t *testing.T) { + t.Parallel() + q := `increase(2000-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{900, 700, 500, 300, 100, -100}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`running_max(1)`, func(t *testing.T) { + t.Parallel() + q := `running_max(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`running_min(abs(1500-time()))`, func(t *testing.T) { + t.Parallel() + q := `running_min(abs(1500-time()))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{500, 300, 100, 100, 100, 100}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`running_max(abs(1300-time()))`, func(t *testing.T) { + t.Parallel() + q := `running_max(abs(1300-time()))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{300, 300, 300, 300, 500, 700}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`running_sum(1)`, func(t *testing.T) { + t.Parallel() + q := `running_sum(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 2, 3, 4, 5, 6}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`running_sum(time())`, func(t *testing.T) { + t.Parallel() + q := `running_sum(time()/1e3)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 2.2, 3.6, 5.2, 7, 9}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`running_avg(time())`, func(t *testing.T) { + t.Parallel() + q := `running_avg(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1100, 1200, 1300, 1400, 1500}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`smooth_exponential(time(), 1)`, func(t *testing.T) { + t.Parallel() + q := `smooth_exponential(time(), 1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`smooth_exponential(time(), 0)`, func(t *testing.T) { + t.Parallel() + q := `smooth_exponential(time(), 0)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1000, 1000, 1000, 1000, 1000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`smooth_exponential(time(), 0.5)`, func(t *testing.T) { + t.Parallel() + q := `smooth_exponential(time(), 0.5)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1100, 1250, 1425, 1612.5, 1806.25}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`remove_resets()`, func(t *testing.T) { + t.Parallel() + q := `remove_resets( abs(1500-time()) )` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{500, 800, 900, 900, 1100, 1300}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_avg(time())`, func(t *testing.T) { + t.Parallel() + q := `range_avg(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1500, 1500, 1500, 1500, 1500, 1500}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_min(time())`, func(t *testing.T) { + t.Parallel() + q := `range_min(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1000, 1000, 1000, 1000, 1000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_first(time())`, func(t *testing.T) { + t.Parallel() + q := `range_first(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1000, 1000, 1000, 1000, 1000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_max(time())`, func(t *testing.T) { + t.Parallel() + q := `range_max(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2000, 2000, 2000, 2000, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`range_last(time())`, func(t *testing.T) { + t.Parallel() + q := `range_last(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2000, 2000, 2000, 2000, 2000, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`deriv(1)`, func(t *testing.T) { + t.Parallel() + q := `deriv(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`deriv(time())`, func(t *testing.T) { + t.Parallel() + q := `deriv(2*time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`deriv(-time())`, func(t *testing.T) { + t.Parallel() + q := `deriv(-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-1, -1, -1, -1, -1, -1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`delta(time())`, func(t *testing.T) { + t.Parallel() + q := `delta(time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 200, 200, 200, 200, 200}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`delta(delta(time()))`, func(t *testing.T) { + t.Parallel() + q := `delta(delta(2*time()))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`delta(-time())`, func(t *testing.T) { + t.Parallel() + q := `delta(-time())` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{-200, -200, -200, -200, -200, -200}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`delta(1)`, func(t *testing.T) { + t.Parallel() + q := `delta(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 0, 0, 0, 0, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`median_over_time("foo")`, func(t *testing.T) { + t.Parallel() + q := `median_over_time("foo")` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`median_over_time(12)`, func(t *testing.T) { + t.Parallel() + q := `median_over_time(12)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{12, 12, 12, 12, 12, 12}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`rollup_increase()`, func(t *testing.T) { + t.Parallel() + q := `sort(rollup_increase(time()))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 200, 200, 200, 200, 200}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("min"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 200, 200, 200, 200, 200}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("max"), + }} + r3 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{200, 200, 200, 200, 200, 200}, + Timestamps: timestampsExpected, + } + r3.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("avg"), + }} + resultExpected := []netstorage.Result{r1, r2, r3} + f(q, resultExpected) + }) + t.Run(`rollup()`, func(t *testing.T) { + t.Parallel() + q := `sort(rollup(time()[:50s]))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1050, 1250, 1450, 1650, 1850, 2050}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("min"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1200, 1400, 1600, 1800, 2000, 2200}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("max"), + }} + r3 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1125, 1325, 1525, 1725, 1925, 2125}, + Timestamps: timestampsExpected, + } + r3.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("avg"), + }} + resultExpected := []netstorage.Result{r1, r2, r3} + f(q, resultExpected) + }) + t.Run(`rollup_deriv()`, func(t *testing.T) { + t.Parallel() + q := `sort(rollup_deriv(time()[100s:50s]))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("min"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("max"), + }} + r3 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r3.MetricName.Tags = []storage.Tag{{ + Key: []byte("rollup"), + Value: []byte("avg"), + }} + resultExpected := []netstorage.Result{r1, r2, r3} + f(q, resultExpected) + }) + t.Run(`{}`, func(t *testing.T) { + t.Parallel() + q := `{}` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`rate({}[:5s])`, func(t *testing.T) { + t.Parallel() + q := `rate({}[:5s])` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`start()`, func(t *testing.T) { + t.Parallel() + q := `time() - start()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{0, 200, 400, 600, 800, 1000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`end()`, func(t *testing.T) { + t.Parallel() + q := `end() - time()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 800, 600, 400, 200, 0}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`step()`, func(t *testing.T) { + t.Parallel() + q := `time() / step()` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{5, 6, 7, 8, 9, 10}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`()`, func(t *testing.T) { + t.Parallel() + q := `()` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`union()`, func(t *testing.T) { + t.Parallel() + q := `union()` + resultExpected := []netstorage.Result{} + f(q, resultExpected) + }) + t.Run(`union(1)`, func(t *testing.T) { + t.Parallel() + q := `union(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`(1)`, func(t *testing.T) { + t.Parallel() + q := `(1)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`union(identical_labels)`, func(t *testing.T) { + t.Parallel() + q := `union(label_set(1, "foo", "bar"), label_set(2, "foo", "bar"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`(identical_labels)`, func(t *testing.T) { + t.Parallel() + q := `(label_set(1, "foo", "bar"), label_set(2, "foo", "bar"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`union(identical_labels_with_names)`, func(t *testing.T) { + t.Parallel() + q := `union(label_set(1, "foo", "bar", "__name__", "xx"), label_set(2, "__name__", "xx", "foo", "bar"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("xx") + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`(identical_labels_with_names)`, func(t *testing.T) { + t.Parallel() + q := `(label_set(1, "foo", "bar", "__name__", "xx"), label_set(2, "__name__", "xx", "foo", "bar"))` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r.MetricName.MetricGroup = []byte("xx") + r.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) + t.Run(`union(identical_labels_different_names)`, func(t *testing.T) { + t.Parallel() + q := `union(label_set(1, "foo", "bar", "__name__", "xx"), label_set(2, "__name__", "yy", "foo", "bar"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r1.MetricName.MetricGroup = []byte("xx") + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + r2.MetricName.MetricGroup = []byte("yy") + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`(identical_labels_different_names)`, func(t *testing.T) { + t.Parallel() + q := `(label_set(1, "foo", "bar", "__name__", "xx"), label_set(2, "__name__", "yy", "foo", "bar"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r1.MetricName.MetricGroup = []byte("xx") + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + r2.MetricName.MetricGroup = []byte("yy") + r2.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r1, r2} + f(q, resultExpected) + }) + t.Run(`union(more-than-two)`, func(t *testing.T) { + t.Parallel() + q := `union( + label_set(1, "foo", "bar", "__name__", "xx"), + label_set(2, "__name__", "yy", "foo", "bar"), + label_set(time(), "qwe", "123") or label_set(3, "__name__", "rt"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1000, 1200, 1400, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{{ + Key: []byte("qwe"), + Value: []byte("123"), + }} + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{3, 3, 3, 3, 3, 3}, + Timestamps: timestampsExpected, + } + r2.MetricName.MetricGroup = []byte("rt") + r3 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{1, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r3.MetricName.MetricGroup = []byte("xx") + r3.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + r4 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 2, 2, 2, 2, 2}, + Timestamps: timestampsExpected, + } + r4.MetricName.MetricGroup = []byte("yy") + r4.MetricName.Tags = []storage.Tag{{ + Key: []byte("foo"), + Value: []byte("bar"), + }} + resultExpected := []netstorage.Result{r1, r2, r3, r4} + f(q, resultExpected) + }) + t.Run(`count_values`, func(t *testing.T) { + t.Parallel() + q := `count_values("xxx", label_set(10, "foo", "bar") or label_set(time()/100, "foo", "bar", "baz", "xx"))` + r1 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{2, 1, 1, 1, 1, 1}, + Timestamps: timestampsExpected, + } + r1.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("10"), + }, + } + r2 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, 1, nan, nan, nan, nan}, + Timestamps: timestampsExpected, + } + r2.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("12"), + }, + } + r3 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, 1, nan, nan, nan}, + Timestamps: timestampsExpected, + } + r3.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("14"), + }, + } + r4 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, nan, 1, nan, nan}, + Timestamps: timestampsExpected, + } + r4.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("16"), + }, + } + r5 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, nan, nan, 1, nan}, + Timestamps: timestampsExpected, + } + r5.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("18"), + }, + } + r6 := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, nan, nan, nan, 1}, + Timestamps: timestampsExpected, + } + r6.MetricName.Tags = []storage.Tag{ + { + Key: []byte("xxx"), + Value: []byte("20"), + }, + } + resultExpected := []netstorage.Result{r1, r2, r3, r4, r5, r6} + f(q, resultExpected) + }) +} + +func TestExecError(t *testing.T) { + f := func(q string) { + t.Helper() + ec := &EvalConfig{ + Start: 1000, + End: 2000, + Step: 100, + Deadline: netstorage.NewDeadline(time.Minute), + } + for i := 0; i < 4; i++ { + rv, err := Exec(ec, q) + if err == nil { + t.Fatalf(`expecting non-nil error on %q`, q) + } + if rv != nil { + t.Fatalf(`expecting nil rv`) + } + } + } + + // Empty expr + f("") + f(" ") + + // Invalid expr + f("1-") + + // Non-existing func + f(`nonexisting()`) + + // Invalid number of args + f(`range_quantile()`) + f(`range_quantile(1, 2, 3)`) + f(`range_median()`) + f(`abs()`) + f(`abs(1,2)`) + f(`absent(1, 2)`) + f(`clamp_max()`) + f(`clamp_min(1,2,3)`) + f(`hour(1,2)`) + f(`label_join()`) + f(`label_replace(1)`) + f(`label_set()`) + f(`label_set(1, "foo")`) + f(`label_del()`) + f(`label_keep()`) + f(`round()`) + f(`round(1,2,3)`) + f(`scalar()`) + f(`sort(1,2)`) + f(`sort_desc()`) + f(`timestamp()`) + f(`vector()`) + f(`histogram_quantile()`) + f(`sum()`) + f(`count_values()`) + f(`quantile()`) + f(`topk()`) + f(`limitk()`) + f(`bottomk()`) + f(`time(123)`) + f(`start(1)`) + f(`end(1)`) + f(`step(1)`) + f(`running_sum(1, 2)`) + f(`range_sum(1, 2)`) + f(`range_first(1, 2)`) + f(`range_last(1, 2)`) + f(`smooth_exponential()`) + f(`smooth_exponential(1)`) + f(`remove_resets()`) + f(`sin()`) + f(`cos()`) + f(`asin()`) + f(`acos()`) + f(`rand(123, 456)`) + f(`rand_normal(123, 456)`) + f(`rand_exponential(122, 456)`) + f(`pi(123)`) + f(`label_copy()`) + f(`label_move()`) + f(`median_over_time()`) + f(`median()`) + f(`median("foo", "bar")`) + f(`keep_last_value()`) + f(`distinct_over_time()`) + f(`distinct()`) + + // Invalid argument type + f(`median_over_time({}, 2)`) + f(`smooth_exponential(1, 1 or label_set(2, "x", "y"))`) + f(`count_values(1, 2)`) + f(`count_values(1 or label_set(2, "xx", "yy"), 2)`) + f(`quantile(1 or label_set(2, "xx", "foo"), 1)`) + f(`clamp_max(1, 1 or label_set(2, "xx", "foo"))`) + f(`clamp_min(1, 1 or label_set(2, "xx", "foo"))`) + f(`topk(label_set(2, "xx", "foo") or 1, 12)`) + f(`limitk(label_set(2, "xx", "foo") or 1, 12)`) + f(`round(1, 1 or label_set(2, "xx", "foo"))`) + f(`histogram_quantile(1 or label_set(2, "xx", "foo"), 1)`) + f(`label_set(1, 2, 3)`) + f(`label_set(1, "foo", (label_set(1, "foo", bar") or label_set(2, "xxx", "yy")))`) + f(`label_set(1, "foo", 3)`) + f(`label_del(1, 2)`) + f(`label_copy(1, 2)`) + f(`label_move(1, 2, 3)`) + f(`label_move(1, "foo", 3)`) + f(`label_keep(1, 2)`) + f(`label_join(1, 2, 3)`) + f(`label_join(1, "foo", 2)`) + f(`label_join(1, "foo", "bar", 2)`) + f(`label_replace(1, 2, 3, 4, 5)`) + f(`label_replace(1, "foo", 3, 4, 5)`) + f(`label_replace(1, "foo", "bar", 4, 5)`) + f(`label_replace(1, "foo", "bar", "baz", 5)`) + f(`label_replace(1, "foo", "bar", "baz", "invalid(regexp")`) + + // Duplicate timeseries + f(`(label_set(1, "foo", "bar") or label_set(2, "foo", "baz")) + + on(xx) + (label_set(1, "foo", "bar") or label_set(2, "foo", "baz"))`) + + // Invalid binary op groupings + f(`1 + group_left() (label_set(1, "foo", bar"), label_set(2, "foo", "baz"))`) + f(`1 + on() group_left() (label_set(1, "foo", bar"), label_set(2, "foo", "baz"))`) + f(`1 + on(a) group_left(b) (label_set(1, "foo", bar"), label_set(2, "foo", "baz"))`) + f(`(label_set(1, "foo", bar"), label_set(2, "foo", "baz")) + group_right 1`) + f(`(label_set(1, "foo", bar"), label_set(2, "foo", "baz")) + on() group_right 1`) + f(`(label_set(1, "foo", bar"), label_set(2, "foo", "baz")) + on(a) group_right(b,c) 1`) + f(`(label_set(1, "foo", bar"), label_set(2, "foo", "baz")) + on() 1`) + f(`1 + on() (label_set(1, "foo", bar"), label_set(2, "foo", "baz"))`) + + // With expressions + f(`ttf()`) + f(`ttf(1, 2)`) + f(`ru()`) + f(`ru(1)`) + f(`ru(1,3,3)`) +} + +func testResultsEqual(t *testing.T, result, resultExpected []netstorage.Result) { + t.Helper() + if len(result) != len(resultExpected) { + t.Fatalf(`unexpected timeseries count; got %d; want %d`, len(result), len(resultExpected)) + } + for i := range result { + r := &result[i] + rExpected := &resultExpected[i] + testMetricNamesEqual(t, &r.MetricName, &rExpected.MetricName) + testRowsEqual(t, r.Values, r.Timestamps, rExpected.Values, rExpected.Timestamps) + } +} + +func testMetricNamesEqual(t *testing.T, mn, mnExpected *storage.MetricName) { + t.Helper() + if string(mn.MetricGroup) != string(mnExpected.MetricGroup) { + t.Fatalf(`unexpected MetricGroup; got %q; want %q`, mn.MetricGroup, mnExpected.MetricGroup) + } + if len(mn.Tags) != len(mnExpected.Tags) { + t.Fatalf(`unexpected tags count; got %d; want %d`, len(mn.Tags), len(mnExpected.Tags)) + } + for i := range mn.Tags { + tag := &mn.Tags[i] + tagExpected := &mnExpected.Tags[i] + if string(tag.Key) != string(tagExpected.Key) { + t.Fatalf(`unexpected tag key; got %q; want %q`, tag.Key, tagExpected.Key) + } + if string(tag.Value) != string(tagExpected.Value) { + t.Fatalf(`unexpected tag value; got %q; want %q`, tag.Value, tagExpected.Value) + } + } +} diff --git a/app/vmselect/promql/lexer.go b/app/vmselect/promql/lexer.go new file mode 100644 index 000000000..4b54f23d6 --- /dev/null +++ b/app/vmselect/promql/lexer.go @@ -0,0 +1,380 @@ +package promql + +import ( + "fmt" + "strconv" + "strings" +) + +type lexer struct { + // Token contains the currently parsed token. + // An empty token means EOF. + Token string + + prevTokens []string + nextTokens []string + + sOrig string + sTail string + + err error +} + +func (lex *lexer) Context() string { + return fmt.Sprintf("%s%s", lex.Token, lex.sTail) +} + +func (lex *lexer) Init(s string) { + lex.Token = "" + lex.prevTokens = nil + lex.nextTokens = nil + lex.err = nil + + lex.sOrig = s + lex.sTail = s +} + +func (lex *lexer) Next() error { + if lex.err != nil { + return lex.err + } + lex.prevTokens = append(lex.prevTokens, lex.Token) + if len(lex.nextTokens) > 0 { + lex.Token = lex.nextTokens[len(lex.nextTokens)-1] + lex.nextTokens = lex.nextTokens[:len(lex.nextTokens)-1] + return nil + } + token, err := lex.next() + if err != nil { + lex.err = err + return err + } + lex.Token = token + return nil +} + +func (lex *lexer) next() (string, error) { +again: + // Skip whitespace + s := lex.sTail + i := 0 + for i < len(s) && isSpaceChar(s[i]) { + i++ + } + s = s[i:] + lex.sTail = s + + if len(s) == 0 { + return "", nil + } + + var token string + var err error + switch s[0] { + case '#': + // Skip comment till the end of string + s = s[1:] + n := strings.IndexByte(s, '\n') + if n < 0 { + return "", nil + } + lex.sTail = s[n+1:] + goto again + case '{', '}', '[', ']', '(', ')', ',': + token = s[:1] + goto tokenFoundLabel + } + if isIdentPrefix(s) { + token, err = scanIdent(s) + if err != nil { + return "", err + } + goto tokenFoundLabel + } + if isStringPrefix(s) { + token, err = scanString(s) + if err != nil { + return "", err + } + goto tokenFoundLabel + } + if n := scanBinaryOpPrefix(s); n > 0 { + token = s[:n] + goto tokenFoundLabel + } + if n := scanTagFilterOpPrefix(s); n > 0 { + token = s[:n] + goto tokenFoundLabel + } + if n := scanDuration(s); n > 0 { + token = s[:n] + goto tokenFoundLabel + } + if isPositiveNumberPrefix(s) { + token, err = scanPositiveNumber(s) + if err != nil { + return "", err + } + goto tokenFoundLabel + } + return "", fmt.Errorf("cannot recognize %q", s) + +tokenFoundLabel: + lex.sTail = s[len(token):] + return token, nil +} + +func scanString(s string) (string, error) { + if len(s) < 2 { + return "", fmt.Errorf("cannot find end of string in %q", s) + } + + quote := s[0] + i := 1 + for { + n := strings.IndexByte(s[i:], quote) + if n < 0 { + return "", fmt.Errorf("cannot find closing quote %ch for the string %q", quote, s) + } + i += n + bs := 0 + for bs < i && s[i-bs-1] == '\\' { + bs++ + } + if bs%2 == 0 { + token := s[:i+1] + return token, nil + } + i++ + } +} + +func scanPositiveNumber(s string) (string, error) { + if strings.HasPrefix(s, "Inf") { + return "Inf", nil + } + if strings.HasPrefix(s, "NaN") { + return "NaN", nil + } + // Scan integer part. It may be empty if fractional part exists. + i := 0 + for i < len(s) && isDecimalChar(s[i]) { + i++ + } + + if i == len(s) { + if i == 0 { + return "", fmt.Errorf("number cannot be empty") + } + return s, nil + } + if s[i] != '.' && s[i] != 'e' && s[i] != 'E' { + return s[:i], nil + } + + if s[i] == '.' { + // Scan fractional part. It cannot be empty. + i++ + j := i + for j < len(s) && isDecimalChar(s[j]) { + j++ + } + if j == i { + return "", fmt.Errorf("missing fractional part in %q", s) + } + i = j + if i == len(s) { + return s, nil + } + } + + if s[i] != 'e' && s[i] != 'E' { + return s[:i], nil + } + i++ + + // Scan exponent part. + if i == len(s) { + return "", fmt.Errorf("missing exponent part in %q", s) + } + if s[i] == '-' || s[i] == '+' { + i++ + } + j := i + for j < len(s) && isDecimalChar(s[j]) { + j++ + } + if j == i { + return "", fmt.Errorf("missing exponent part in %q", s) + } + return s[:j], nil +} + +func scanIdent(s string) (string, error) { + if len(s) == 0 { + return "", fmt.Errorf("ident cannot be empty") + } + i := 0 + for i < len(s) && isIdentChar(s[i]) { + i++ + } + return s[:i], nil +} + +func (lex *lexer) Prev() { + lex.nextTokens = append(lex.nextTokens, lex.Token) + lex.Token = lex.prevTokens[len(lex.prevTokens)-1] + lex.prevTokens = lex.prevTokens[:len(lex.prevTokens)-1] +} + +func isEOF(s string) bool { + return len(s) == 0 +} + +func scanTagFilterOpPrefix(s string) int { + if len(s) >= 2 { + switch s[:2] { + case "=~", "!~", "!=": + return 2 + } + } + if len(s) >= 1 { + if s[0] == '=' { + return 1 + } + } + return -1 +} + +func isOffset(s string) bool { + s = strings.ToLower(s) + return s == "offset" +} + +func isStringPrefix(s string) bool { + if len(s) == 0 { + return false + } + switch s[0] { + // See https://prometheus.io/docs/prometheus/latest/querying/basics/#string-literals + case '"', '\'', '`': + return true + default: + return false + } +} + +func isPositiveNumberPrefix(s string) bool { + if len(s) == 0 { + return false + } + if isDecimalChar(s[0]) { + return true + } + + // Check for .234 numbers + if s[0] != '.' || len(s) < 2 { + return strings.HasPrefix(s, "Inf") || strings.HasPrefix(s, "NaN") + } + return isDecimalChar(s[1]) +} + +func isDuration(s string) bool { + n := scanDuration(s) + return n == len(s) +} + +// DurationValue returns the duration in milliseconds for the given s +// and the given step. +func DurationValue(s string, step int64) (int64, error) { + n := scanDuration(s) + if n != len(s) { + return 0, fmt.Errorf("cannot parse duration %q", s) + } + + f, err := strconv.ParseFloat(s[:len(s)-1], 64) + if err != nil { + return 0, fmt.Errorf("cannot parse duration %q: %s", s, err) + } + + var mp float64 + switch s[len(s)-1] { + case 's': + mp = 1 + case 'm': + mp = 60 + case 'h': + mp = 60 * 60 + case 'd': + mp = 24 * 60 * 60 + case 'w': + mp = 7 * 24 * 60 * 60 + case 'y': + mp = 365 * 24 * 60 * 60 + case 'i': + mp = float64(step) / 1e3 + default: + return 0, fmt.Errorf("invalid duration suffix in %q", s) + } + return int64(mp * f * 1e3), nil +} + +func scanDuration(s string) int { + i := 0 + for i < len(s) && isDecimalChar(s[i]) { + i++ + } + if i == 0 || i == len(s) { + return -1 + } + if s[i] == '.' { + j := i + i++ + for i < len(s) && isDecimalChar(s[i]) { + i++ + } + if i == j || i == len(s) { + return -1 + } + } + switch s[i] { + case 's', 'm', 'h', 'd', 'w', 'y', 'i': + return i + 1 + default: + return -1 + } +} + +func isDecimalChar(ch byte) bool { + return ch >= '0' && ch <= '9' +} + +func isIdentPrefix(s string) bool { + if len(s) == 0 { + return false + } + return isFirstIdentChar(s[0]) +} + +func isFirstIdentChar(ch byte) bool { + if ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' { + return true + } + return ch == '_' || ch == ':' +} + +func isIdentChar(ch byte) bool { + if isFirstIdentChar(ch) { + return true + } + return isDecimalChar(ch) || ch == ':' || ch == '.' +} + +func isSpaceChar(ch byte) bool { + switch ch { + case ' ', '\t', '\n', '\v', '\f', '\r': + return true + default: + return false + } +} diff --git a/app/vmselect/promql/lexer_test.go b/app/vmselect/promql/lexer_test.go new file mode 100644 index 000000000..d6a9abd3f --- /dev/null +++ b/app/vmselect/promql/lexer_test.go @@ -0,0 +1,295 @@ +package promql + +import ( + "reflect" + "testing" +) + +func TestLexerNextPrev(t *testing.T) { + var lex lexer + lex.Init("foo bar baz") + if lex.Token != "" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "") + } + if err := lex.Next(); err != nil { + t.Fatalf("unexpeted error: %s", err) + } + if lex.Token != "foo" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "foo") + } + + // Rewind before the first item. + lex.Prev() + if lex.Token != "" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "") + } + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "foo" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "foo") + } + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "bar" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "bar") + } + + // Rewind to the first item. + lex.Prev() + if lex.Token != "foo" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "foo") + } + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "bar" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "bar") + } + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "baz" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "baz") + } + + // Go beyond the token stream. + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "") + } + if !isEOF(lex.Token) { + t.Fatalf("expecting eof") + } + lex.Prev() + if lex.Token != "baz" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "baz") + } + + // Go multiple times lex.Next() beyond token stream. + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "") + } + if !isEOF(lex.Token) { + t.Fatalf("expecting eof") + } + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if lex.Token != "" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "") + } + if !isEOF(lex.Token) { + t.Fatalf("expecting eof") + } + lex.Prev() + if lex.Token != "" { + t.Fatalf("unexpected token got: %q; want %q", lex.Token, "") + } + if !isEOF(lex.Token) { + t.Fatalf("expecting eof") + } +} + +func TestLexerSuccess(t *testing.T) { + var s string + var expectedTokens []string + + // An empty string + s = "" + expectedTokens = nil + testLexerSuccess(t, s, expectedTokens) + + // String with whitespace + s = " \n\t\r " + expectedTokens = nil + testLexerSuccess(t, s, expectedTokens) + + // Just metric name + s = "metric" + expectedTokens = []string{"metric"} + testLexerSuccess(t, s, expectedTokens) + + // Metric name with spec chars + s = ":foo.bar_" + expectedTokens = []string{":foo.bar_"} + testLexerSuccess(t, s, expectedTokens) + + // Metric name with window + s = "metric[5m] " + expectedTokens = []string{"metric", "[", "5m", "]"} + testLexerSuccess(t, s, expectedTokens) + + // Metric name with tag filters + s = ` metric:12.34{a="foo", b != "bar", c=~ "x.+y", d !~ "zzz"}` + expectedTokens = []string{`metric:12.34`, `{`, `a`, `=`, `"foo"`, `,`, `b`, `!=`, `"bar"`, `,`, `c`, `=~`, `"x.+y"`, `,`, `d`, `!~`, `"zzz"`, `}`} + testLexerSuccess(t, s, expectedTokens) + + // Metric name with offset + s = ` metric offset 10d ` + expectedTokens = []string{`metric`, `offset`, `10d`} + testLexerSuccess(t, s, expectedTokens) + + // Func call + s = `sum ( metric{x="y" } [5m] offset 10h)` + expectedTokens = []string{`sum`, `(`, `metric`, `{`, `x`, `=`, `"y"`, `}`, `[`, `5m`, `]`, `offset`, `10h`, `)`} + testLexerSuccess(t, s, expectedTokens) + + // Binary op + s = `a+b or c % d and e unless f` + expectedTokens = []string{`a`, `+`, `b`, `or`, `c`, `%`, `d`, `and`, `e`, `unless`, `f`} + testLexerSuccess(t, s, expectedTokens) + + // Numbers + s = `3+1.2-.23+4.5e5-78e-6+1.24e+45-NaN+Inf` + expectedTokens = []string{`3`, `+`, `1.2`, `-`, `.23`, `+`, `4.5e5`, `-`, `78e-6`, `+`, `1.24e+45`, `-`, `NaN`, `+`, `Inf`} + testLexerSuccess(t, s, expectedTokens) + + s = `12.34` + expectedTokens = []string{`12.34`} + testLexerSuccess(t, s, expectedTokens) + + // Strings + s = `""''` + "``" + `"\\" '\\' "\"" '\''"\\\"\\"` + expectedTokens = []string{`""`, `''`, "``", `"\\"`, `'\\'`, `"\""`, `'\''`, `"\\\"\\"`} + testLexerSuccess(t, s, expectedTokens) + + s = " `foo\\\\\\`бар` " + expectedTokens = []string{"`foo\\\\\\`бар`"} + testLexerSuccess(t, s, expectedTokens) + + s = `# comment # sdf + foobar # comment + baz + # yet another comment` + expectedTokens = []string{"foobar", "baz"} + testLexerSuccess(t, s, expectedTokens) +} + +func testLexerSuccess(t *testing.T, s string, expectedTokens []string) { + t.Helper() + + var lex lexer + lex.Init(s) + + var tokens []string + for { + if err := lex.Next(); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if isEOF(lex.Token) { + break + } + tokens = append(tokens, lex.Token) + } + if !reflect.DeepEqual(tokens, expectedTokens) { + t.Fatalf("unexected tokens\ngot\n%q\nwant\n%q", tokens, expectedTokens) + } +} + +func TestLexerError(t *testing.T) { + // Invalid identifier + testLexerError(t, ".foo") + + // Incomplete string + testLexerError(t, `"foobar`) + testLexerError(t, `'`) + testLexerError(t, "`") + + // Unrecognized char + testLexerError(t, "тест") + + // Invalid numbers + testLexerError(t, `.`) + testLexerError(t, `123.`) + testLexerError(t, `12e`) + testLexerError(t, `1.2e`) + testLexerError(t, `1.2E+`) + testLexerError(t, `1.2E-`) +} + +func testLexerError(t *testing.T, s string) { + t.Helper() + + var lex lexer + lex.Init(s) + for { + if err := lex.Next(); err != nil { + // Expected error + break + } + if isEOF(lex.Token) { + t.Fatalf("expecting error during parse") + } + } + + // Try calling Next again. It must return error. + if err := lex.Next(); err == nil { + t.Fatalf("expecting non-nil error") + } +} + +func TestDurationSuccess(t *testing.T) { + // Integer durations + testDurationSuccess(t, "123s", 42, 123*1000) + testDurationSuccess(t, "123m", 42, 123*60*1000) + testDurationSuccess(t, "1h", 42, 1*60*60*1000) + testDurationSuccess(t, "2d", 42, 2*24*60*60*1000) + testDurationSuccess(t, "3w", 42, 3*7*24*60*60*1000) + testDurationSuccess(t, "4y", 42, 4*365*24*60*60*1000) + testDurationSuccess(t, "1i", 42*1000, 42*1000) + testDurationSuccess(t, "3i", 42, 3*42) + + // Float durations + testDurationSuccess(t, "0.234s", 42, 234) + testDurationSuccess(t, "1.5s", 42, 1.5*1000) + testDurationSuccess(t, "1.5m", 42, 1.5*60*1000) + testDurationSuccess(t, "1.2h", 42, 1.2*60*60*1000) + testDurationSuccess(t, "1.1d", 42, 1.1*24*60*60*1000) + testDurationSuccess(t, "1.1w", 42, 1.1*7*24*60*60*1000) + testDurationSuccess(t, "1.3y", 42, 1.3*365*24*60*60*1000) + testDurationSuccess(t, "0.1i", 12340, 0.1*12340) +} + +func testDurationSuccess(t *testing.T, s string, step, expectedD int64) { + t.Helper() + d, err := DurationValue(s, step) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if d != expectedD { + t.Fatalf("unexpected duration; got %d; want %d", d, expectedD) + } +} + +func TestDurationError(t *testing.T) { + testDurationError(t, "") + testDurationError(t, "foo") + testDurationError(t, "m") + testDurationError(t, "12") + testDurationError(t, "1.23") + testDurationError(t, "1.23mm") + testDurationError(t, "123q") +} + +func testDurationError(t *testing.T, s string) { + t.Helper() + + if isDuration(s) { + t.Fatalf("unexpected valud duration %q", s) + } + + d, err := DurationValue(s, 42) + if err == nil { + t.Fatalf("expecting non-nil error for duration %q", s) + } + if d != 0 { + t.Fatalf("expecting zero duration; got %d", d) + } +} diff --git a/app/vmselect/promql/parser.go b/app/vmselect/promql/parser.go new file mode 100644 index 000000000..5193d1a3a --- /dev/null +++ b/app/vmselect/promql/parser.go @@ -0,0 +1,1649 @@ +package promql + +import ( + "fmt" + "strconv" + "strings" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +func getDefaultWithArgExprs() []*withArgExpr { + defaultWithArgExprsOnce.Do(func() { + defaultWithArgExprs = prepareWithArgExprs([]string{ + // ru - resource utilization + `ru(freev, maxv) = clamp_min(maxv - clamp_min(freev, 0), 0) / clamp_min(maxv, 0) * 100`, + + // ttf - time to fuckup + `ttf(freev) = smooth_exponential( + clamp_max(clamp_min(freev, 0) / clamp_min(deriv(-freev), 0), 365*24*3600), + clamp_max(step()/300, 1) + )`, + + `median_over_time(m) = quantile_over_time(0.5, m)`, + `range_median(q) = range_quantile(0.5, q)`, + }) + }) + return defaultWithArgExprs +} + +var ( + defaultWithArgExprs []*withArgExpr + defaultWithArgExprsOnce sync.Once +) + +func prepareWithArgExprs(ss []string) []*withArgExpr { + was := make([]*withArgExpr, len(ss)) + for i, s := range ss { + was[i] = mustParseWithArgExpr(s) + } + if err := checkDuplicateWithArgNames(was); err != nil { + logger.Panicf("BUG: %s", err) + } + return was +} + +func checkDuplicateWithArgNames(was []*withArgExpr) error { + m := make(map[string]*withArgExpr, len(was)) + for _, wa := range was { + if waOld := m[wa.Name]; waOld != nil { + return fmt.Errorf("duplicate `with` arg name for: %s; previous one: %s", wa, waOld.AppendString(nil)) + } + m[wa.Name] = wa + } + return nil +} + +func mustParseWithArgExpr(s string) *withArgExpr { + var p parser + p.lex.Init(s) + if err := p.lex.Next(); err != nil { + logger.Panicf("BUG: cannot find the first token in %q: %s", s, err) + } + wa, err := p.parseWithArgExpr() + if err != nil { + logger.Panicf("BUG: cannot parse %q: %s; unparsed data: %q", s, err, p.lex.Context()) + } + return wa +} + +func parsePromQL(s string) (expr, error) { + var p parser + p.lex.Init(s) + if err := p.lex.Next(); err != nil { + return nil, fmt.Errorf(`cannot find the first token: %s`, err) + } + e, err := p.parseExpr() + if err != nil { + return nil, fmt.Errorf(`%s; unparsed data: %q`, err, p.lex.Context()) + } + if !isEOF(p.lex.Token) { + return nil, fmt.Errorf(`unparsed data left: %q`, p.lex.Context()) + } + was := getDefaultWithArgExprs() + if e, err = expandWithExpr(was, e); err != nil { + return nil, fmt.Errorf(`cannot expand WITH expressions: %s`, err) + } + e = removeParensExpr(e) + e = simplifyConstants(e) + return e, nil +} + +// removeParensExpr removes parensExpr for (expr) case. +func removeParensExpr(e expr) expr { + if re, ok := e.(*rollupExpr); ok { + re.Expr = removeParensExpr(re.Expr) + return re + } + if be, ok := e.(*binaryOpExpr); ok { + be.Left = removeParensExpr(be.Left) + be.Right = removeParensExpr(be.Right) + return be + } + if ae, ok := e.(*aggrFuncExpr); ok { + for i, arg := range ae.Args { + ae.Args[i] = removeParensExpr(arg) + } + return ae + } + if fe, ok := e.(*funcExpr); ok { + for i, arg := range fe.Args { + fe.Args[i] = removeParensExpr(arg) + } + return fe + } + if pe, ok := e.(*parensExpr); ok { + if len(*pe) == 1 { + return removeParensExpr((*pe)[0]) + } + // Treat parensExpr as a function with empty name, i.e. union() + fe := &funcExpr{ + Name: "", + Args: *pe, + } + return fe + } + return e +} + +func simplifyConstants(e expr) expr { + if re, ok := e.(*rollupExpr); ok { + re.Expr = simplifyConstants(re.Expr) + return re + } + if ae, ok := e.(*aggrFuncExpr); ok { + simplifyConstantsInplace(ae.Args) + return ae + } + if fe, ok := e.(*funcExpr); ok { + simplifyConstantsInplace(fe.Args) + return fe + } + if pe, ok := e.(*parensExpr); ok { + if len(*pe) == 1 { + return simplifyConstants((*pe)[0]) + } + simplifyConstantsInplace(*pe) + return pe + } + be, ok := e.(*binaryOpExpr) + if !ok { + return e + } + + be.Left = simplifyConstants(be.Left) + be.Right = simplifyConstants(be.Right) + + lne, ok := be.Left.(*numberExpr) + if !ok { + return be + } + rne, ok := be.Right.(*numberExpr) + if !ok { + return be + } + n := binaryOpConstants(be.Op, lne.N, rne.N, be.Bool) + ne := &numberExpr{ + N: n, + } + return ne +} + +func simplifyConstantsInplace(args []expr) { + for i, arg := range args { + args[i] = simplifyConstants(arg) + } +} + +// parser parses PromQL expression. +// +// preconditions for all parser.parse* funcs: +// - p.lex.Token should point to the first token to parse. +// +// postconditions for all parser.parse* funcs: +// - p.lex.Token should point to the next token after the parsed token. +type parser struct { + lex lexer +} + +func isWith(s string) bool { + s = strings.ToLower(s) + return s == "with" +} + +// parseWithExpr parses `WITH (withArgExpr...) expr`. +func (p *parser) parseWithExpr() (*withExpr, error) { + var we withExpr + if !isWith(p.lex.Token) { + return nil, fmt.Errorf("withExpr: unexpected token %q; want `WITH`", p.lex.Token) + } + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token != "(" { + return nil, fmt.Errorf(`withExpr: unexpected token %q; want "("`, p.lex.Token) + } + for { + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == ")" { + goto end + } + wa, err := p.parseWithArgExpr() + if err != nil { + return nil, err + } + we.Was = append(we.Was, wa) + switch p.lex.Token { + case ",": + continue + case ")": + goto end + default: + return nil, fmt.Errorf(`withExpr: unexpected token %q; want ",", ")"`, p.lex.Token) + } + } + +end: + if err := checkDuplicateWithArgNames(we.Was); err != nil { + return nil, err + } + if err := p.lex.Next(); err != nil { + return nil, err + } + e, err := p.parseExpr() + if err != nil { + return nil, err + } + we.Expr = e + return &we, nil +} + +func (p *parser) parseWithArgExpr() (*withArgExpr, error) { + var wa withArgExpr + if !isIdentPrefix(p.lex.Token) { + return nil, fmt.Errorf(`withArgExpr: unexpected token %q; want "ident"`, p.lex.Token) + } + wa.Name = p.lex.Token + if isAggrFunc(wa.Name) || isRollupFunc(wa.Name) || isTransformFunc(wa.Name) || isWith(wa.Name) { + return nil, fmt.Errorf(`withArgExpr: cannot use reserved name %q`, wa.Name) + } + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == "(" { + // Parse func args. + args, err := p.parseIdentList() + if err != nil { + return nil, fmt.Errorf(`withArgExpr: cannot parse args for %q: %s`, wa.Name, err) + } + // Make sure all the args have different names + m := make(map[string]bool, len(args)) + for _, arg := range args { + if m[arg] { + return nil, fmt.Errorf(`withArgExpr: duplicate func arg found in %q: %q`, wa.Name, arg) + } + m[arg] = true + } + wa.Args = args + } + if p.lex.Token != "=" { + return nil, fmt.Errorf(`withArgExpr: unexpected token %q; want "="`, p.lex.Token) + } + if err := p.lex.Next(); err != nil { + return nil, err + } + e, err := p.parseExpr() + if err != nil { + return nil, fmt.Errorf(`withArgExpr: cannot parse %q: %s`, wa.Name, err) + } + wa.Expr = e + return &wa, nil +} + +// parseExpr parses promql expr +func (p *parser) parseExpr() (expr, error) { + e, err := p.parseSingleExpr() + if err != nil { + return nil, err + } + for { + if !isBinaryOp(p.lex.Token) { + return e, nil + } + + var be binaryOpExpr + be.Op = strings.ToLower(p.lex.Token) + be.Left = e + if err := p.lex.Next(); err != nil { + return nil, err + } + if isBinaryOpBoolModifier(p.lex.Token) { + if !isBinaryOpCmp(be.Op) { + return nil, fmt.Errorf(`bool modifier cannot be applied to %q`, be.Op) + } + be.Bool = true + if err := p.lex.Next(); err != nil { + return nil, err + } + } + if isBinaryOpGroupModifier(p.lex.Token) { + if err := p.parseModifierExpr(&be.GroupModifier); err != nil { + return nil, err + } + if isBinaryOpJoinModifier(p.lex.Token) { + if isBinaryOpLogicalSet(be.Op) { + return nil, fmt.Errorf(`modifier %q cannot be applied to %q`, p.lex.Token, be.Op) + } + if err := p.parseModifierExpr(&be.JoinModifier); err != nil { + return nil, err + } + } + } + e2, err := p.parseSingleExpr() + if err != nil { + return nil, err + } + be.Right = e2 + e = balanceBinaryOp(&be) + } +} + +func balanceBinaryOp(be *binaryOpExpr) expr { + bel, ok := be.Left.(*binaryOpExpr) + if !ok { + return be + } + lp := binaryOpPriority(bel.Op) + rp := binaryOpPriority(be.Op) + if rp < lp { + return be + } + if rp == lp && !isRightAssociativeBinaryOp(be.Op) { + return be + } + be.Left = bel.Right + bel.Right = balanceBinaryOp(be) + return bel +} + +// parseSingleExpr parses non-binaryOp expressions. +func (p *parser) parseSingleExpr() (expr, error) { + if isWith(p.lex.Token) { + err := p.lex.Next() + nextToken := p.lex.Token + p.lex.Prev() + if err == nil && nextToken == "(" { + return p.parseWithExpr() + } + } + e, err := p.parseSingleExprWithoutRollupSuffix() + if err != nil { + return nil, err + } + if p.lex.Token != "[" && !isOffset(p.lex.Token) { + // There is no rollup expression. + return e, nil + } + return p.parseRollupExpr(e) +} + +func (p *parser) parseSingleExprWithoutRollupSuffix() (expr, error) { + if isPositiveNumberPrefix(p.lex.Token) { + return p.parsePositiveNumberExpr() + } + if isStringPrefix(p.lex.Token) { + return p.parseStringExpr() + } + if isIdentPrefix(p.lex.Token) { + return p.parseIdentExpr() + } + switch p.lex.Token { + case "(": + return p.parseParensExpr() + case "{": + return p.parseMetricExpr() + case "-": + // Unary minus. Substitute -expr with (0 - expr) + if err := p.lex.Next(); err != nil { + return nil, err + } + e, err := p.parseSingleExpr() + if err != nil { + return nil, err + } + be := &binaryOpExpr{ + Op: "-", + Left: &numberExpr{ + N: 0, + }, + Right: e, + } + pe := parensExpr{be} + return &pe, nil + case "+": + // Unary plus + if err := p.lex.Next(); err != nil { + return nil, err + } + return p.parseSingleExpr() + default: + return nil, fmt.Errorf(`singleExpr: unexpected token %q; want "(", "{", "-", "+"`, p.lex.Token) + } +} + +func (p *parser) parsePositiveNumberExpr() (*numberExpr, error) { + if !isPositiveNumberPrefix(p.lex.Token) { + return nil, fmt.Errorf(`positiveNumberExpr: unexpected token %q; want "number"`, p.lex.Token) + } + + n, err := strconv.ParseFloat(p.lex.Token, 64) + if err != nil { + return nil, fmt.Errorf(`positiveNumberExpr: cannot parse %q: %s`, p.lex.Token, err) + } + if err := p.lex.Next(); err != nil { + return nil, err + } + ne := &numberExpr{ + N: n, + } + return ne, nil +} + +func (p *parser) parseStringExpr() (*stringExpr, error) { + var se stringExpr + + for { + switch { + case isStringPrefix(p.lex.Token) || isIdentPrefix(p.lex.Token): + se.tokens = append(se.tokens, p.lex.Token) + default: + return nil, fmt.Errorf(`stringExpr: unexpected token %q; want "string"`, p.lex.Token) + } + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token != "+" { + return &se, nil + } + + // composite stringExpr like `"s1" + "s2"`, `"s" + m()` or `"s" + m{}` or `"s" + unknownToken`. + if err := p.lex.Next(); err != nil { + return nil, err + } + if isStringPrefix(p.lex.Token) { + // "s1" + "s2" + continue + } + if !isIdentPrefix(p.lex.Token) { + // "s" + unknownToken + p.lex.Prev() + return &se, nil + } + // Look after ident + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == "(" || p.lex.Token == "{" { + // `"s" + m(` or `"s" + m{` + p.lex.Prev() + p.lex.Prev() + return &se, nil + } + // "s" + ident + p.lex.Prev() + } +} + +func (p *parser) parseParensExpr() (*parensExpr, error) { + if p.lex.Token != "(" { + return nil, fmt.Errorf(`parensExpr: unexpected token %q; want "("`, p.lex.Token) + } + var exprs []expr + for { + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == ")" { + break + } + expr, err := p.parseExpr() + if err != nil { + return nil, err + } + exprs = append(exprs, expr) + if p.lex.Token == "," { + continue + } + if p.lex.Token == ")" { + break + } + return nil, fmt.Errorf(`parensExpr: unexpected token %q; want "," or ")"`, p.lex.Token) + } + if err := p.lex.Next(); err != nil { + return nil, err + } + pe := parensExpr(exprs) + return &pe, nil +} + +func (p *parser) parseAggrFuncExpr() (*aggrFuncExpr, error) { + if !isAggrFunc(p.lex.Token) { + return nil, fmt.Errorf(`aggrFuncExpr: unexpected token %q; want aggregate func`, p.lex.Token) + } + + var ae aggrFuncExpr + ae.Name = strings.ToLower(p.lex.Token) + if err := p.lex.Next(); err != nil { + return nil, err + } + if isIdentPrefix(p.lex.Token) { + goto funcPrefixLabel + } + switch p.lex.Token { + case "(": + goto funcArgsLabel + default: + return nil, fmt.Errorf(`aggrFuncExpr: unexpected token %q; want "("`, p.lex.Token) + } + +funcPrefixLabel: + { + if !isAggrFuncModifier(p.lex.Token) { + return nil, fmt.Errorf(`aggrFuncExpr: unexpected token %q; want aggregate func modifier`, p.lex.Token) + } + if err := p.parseModifierExpr(&ae.Modifier); err != nil { + return nil, err + } + goto funcArgsLabel + } + +funcArgsLabel: + { + args, err := p.parseArgListExpr() + if err != nil { + return nil, err + } + ae.Args = args + + // Verify whether func suffix exists. + if ae.Modifier.Op != "" || !isAggrFuncModifier(p.lex.Token) { + return &ae, nil + } + if err := p.parseModifierExpr(&ae.Modifier); err != nil { + return nil, err + } + return &ae, nil + } +} + +func expandWithExpr(was []*withArgExpr, e expr) (expr, error) { + switch t := e.(type) { + case *binaryOpExpr: + left, err := expandWithExpr(was, t.Left) + if err != nil { + return nil, err + } + right, err := expandWithExpr(was, t.Right) + if err != nil { + return nil, err + } + groupModifierArgs, err := expandModifierArgs(was, t.GroupModifier.Args) + if err != nil { + return nil, err + } + joinModifierArgs, err := expandModifierArgs(was, t.JoinModifier.Args) + if err != nil { + return nil, err + } + if t.Op == "+" { + lse, lok := left.(*stringExpr) + rse, rok := right.(*stringExpr) + if lok && rok { + se := &stringExpr{ + S: lse.S + rse.S, + } + return se, nil + } + } + be := &binaryOpExpr{ + Op: t.Op, + Bool: t.Bool, + GroupModifier: t.GroupModifier, + JoinModifier: t.JoinModifier, + Left: left, + Right: right, + } + be.GroupModifier.Args = groupModifierArgs + be.JoinModifier.Args = joinModifierArgs + pe := parensExpr{be} + return &pe, nil + case *funcExpr: + args, err := expandWithArgs(was, t.Args) + if err != nil { + return nil, err + } + wa := getWithArgExpr(was, t.Name) + if wa == nil { + fe := &funcExpr{ + Name: t.Name, + Args: args, + } + return fe, nil + } + return expandWithExprExt(was, wa, args) + case *aggrFuncExpr: + args, err := expandWithArgs(was, t.Args) + if err != nil { + return nil, err + } + modifierArgs, err := expandModifierArgs(was, t.Modifier.Args) + if err != nil { + return nil, err + } + ae := &aggrFuncExpr{ + Name: t.Name, + Args: args, + Modifier: t.Modifier, + } + ae.Modifier.Args = modifierArgs + return ae, nil + case *parensExpr: + exprs, err := expandWithArgs(was, *t) + if err != nil { + return nil, err + } + pe := parensExpr(exprs) + return &pe, nil + case *stringExpr: + if len(t.S) > 0 { + // Already expanded. + return t, nil + } + var b []byte + for _, token := range t.tokens { + if isStringPrefix(token) { + s, err := extractStringValue(token) + if err != nil { + return nil, err + } + b = append(b, s...) + continue + } + wa := getWithArgExpr(was, token) + if wa == nil { + return nil, fmt.Errorf("missing %q value inside stringExpr", token) + } + eNew, err := expandWithExprExt(was, wa, nil) + if err != nil { + return nil, err + } + seSrc, ok := eNew.(*stringExpr) + if !ok { + return nil, fmt.Errorf("%q must be string expression; got %q", token, eNew.AppendString(nil)) + } + if len(seSrc.tokens) > 0 { + logger.Panicf("BUG: seSrc.tokens must be empty; got %q", seSrc.tokens) + } + b = append(b, seSrc.S...) + } + se := &stringExpr{ + S: string(b), + } + return se, nil + case *rollupExpr: + eNew, err := expandWithExpr(was, t.Expr) + if err != nil { + return nil, err + } + re := *t + re.Expr = eNew + return &re, nil + case *withExpr: + wasNew := make([]*withArgExpr, 0, len(was)+len(t.Was)) + wasNew = append(wasNew, was...) + wasNew = append(wasNew, t.Was...) + eNew, err := expandWithExpr(wasNew, t.Expr) + if err != nil { + return nil, err + } + return eNew, nil + case *metricExpr: + if len(t.TagFilters) > 0 { + // Already expanded. + return t, nil + } + { + var me metricExpr + // Populate me.TagFilters + for _, tfe := range t.tagFilters { + if tfe.Value == nil { + // Expand tfe.Key into storage.TagFilters. + wa := getWithArgExpr(was, tfe.Key) + if wa == nil { + return nil, fmt.Errorf("missing %q value inside %q", tfe.Key, t.AppendString(nil)) + } + eNew, err := expandWithExprExt(was, wa, nil) + if err != nil { + return nil, err + } + wme, ok := eNew.(*metricExpr) + if !ok || wme.HasNonEmptyMetricGroup() { + return nil, fmt.Errorf("%q must be filters expression inside %q; got %q", tfe.Key, t.AppendString(nil), eNew.AppendString(nil)) + } + if len(wme.tagFilters) > 0 { + logger.Panicf("BUG: wme.tagFilters must be empty; got %s", wme.tagFilters) + } + me.TagFilters = append(me.TagFilters, wme.TagFilters...) + continue + } + + // convert tfe to storage.TagFilter. + se, err := expandWithExpr(was, tfe.Value) + if err != nil { + return nil, err + } + var tfeNew tagFilterExpr + tfeNew.Key = tfe.Key + tfeNew.Value = se.(*stringExpr) + tfeNew.IsNegative = tfe.IsNegative + tfeNew.IsRegexp = tfe.IsRegexp + tf, err := tfeNew.toTagFilter() + if err != nil { + return nil, err + } + me.TagFilters = append(me.TagFilters, *tf) + } + me.TagFilters = removeDuplicateTagFilters(me.TagFilters) + t = &me + } + if !t.HasNonEmptyMetricGroup() { + return t, nil + } + k := bytesutil.ToUnsafeString(t.TagFilters[0].Value) + wa := getWithArgExpr(was, k) + if wa == nil { + return t, nil + } + eNew, err := expandWithExprExt(was, wa, nil) + if err != nil { + return nil, err + } + var wme *metricExpr + re, _ := eNew.(*rollupExpr) + if re != nil { + wme, _ = re.Expr.(*metricExpr) + } else { + wme, _ = eNew.(*metricExpr) + } + if wme == nil { + if !t.IsOnlyMetricGroup() { + return nil, fmt.Errorf("cannot expand %q to non-metric expression %q", t.AppendString(nil), eNew.AppendString(nil)) + } + return eNew, nil + } + if len(wme.tagFilters) > 0 { + logger.Panicf("BUG: wme.tagFilters must be empty; got %s", wme.tagFilters) + } + + var me metricExpr + me.TagFilters = append(me.TagFilters, wme.TagFilters...) + me.TagFilters = append(me.TagFilters, t.TagFilters[1:]...) + me.TagFilters = removeDuplicateTagFilters(me.TagFilters) + + if re == nil { + return &me, nil + } + reNew := *re + reNew.Expr = &me + return &reNew, nil + default: + return e, nil + } +} + +func expandWithArgs(was []*withArgExpr, args []expr) ([]expr, error) { + dstArgs := make([]expr, len(args)) + for i, arg := range args { + dstArg, err := expandWithExpr(was, arg) + if err != nil { + return nil, err + } + dstArgs[i] = dstArg + } + return dstArgs, nil +} + +func expandModifierArgs(was []*withArgExpr, args []string) ([]string, error) { + if len(args) == 0 { + return nil, nil + } + dstArgs := make([]string, 0, len(args)) + for _, arg := range args { + wa := getWithArgExpr(was, arg) + if wa == nil { + // Leave the arg as is. + dstArgs = append(dstArgs, arg) + continue + } + if len(wa.Args) > 0 { + return nil, fmt.Errorf("cannot use func %q instead of %q in %s", wa.Name, arg, args) + } + me, ok := wa.Expr.(*metricExpr) + if ok { + if !me.IsOnlyMetricGroup() { + return nil, fmt.Errorf("cannot use %q instead of %q in %s", me.AppendString(nil), arg, args) + } + dstArg := string(me.TagFilters[0].Value) + dstArgs = append(dstArgs, dstArg) + continue + } + pe, ok := wa.Expr.(*parensExpr) + if ok { + for _, pArg := range *pe { + me, ok := pArg.(*metricExpr) + if !ok || !me.IsOnlyMetricGroup() { + return nil, fmt.Errorf("cannot use %q instead of %q in %s", pe.AppendString(nil), arg, args) + } + dstArg := string(me.TagFilters[0].Value) + dstArgs = append(dstArgs, dstArg) + } + continue + } + return nil, fmt.Errorf("cannot use %q instead of %q in %s", wa.Expr.AppendString(nil), arg, args) + } + + // Remove duplicate args from dstArgs + m := make(map[string]bool, len(dstArgs)) + filteredArgs := dstArgs[:0] + for _, arg := range dstArgs { + if !m[arg] { + filteredArgs = append(filteredArgs, arg) + m[arg] = true + } + } + return filteredArgs, nil +} + +func expandWithExprExt(was []*withArgExpr, wa *withArgExpr, args []expr) (expr, error) { + if len(wa.Args) != len(args) { + return nil, fmt.Errorf("invalid number of args for %q; got %d; want %d", wa.Name, len(args), len(wa.Args)) + } + wasNew := make([]*withArgExpr, 0, len(was)+len(args)) + for _, waTmp := range was { + if waTmp == wa { + break + } + wasNew = append(wasNew, waTmp) + } + for i, arg := range args { + wasNew = append(wasNew, &withArgExpr{ + Name: wa.Args[i], + Expr: arg, + }) + } + return expandWithExpr(wasNew, wa.Expr) +} + +func extractStringValue(token string) (string, error) { + if !isStringPrefix(token) { + return "", fmt.Errorf(`stringExpr must contain only string literals; got %q`, token) + } + + // See https://prometheus.io/docs/prometheus/latest/querying/basics/#string-literals + if token[0] == '\'' { + if len(token) < 2 || token[len(token)-1] != '\'' { + return "", fmt.Errorf(`string literal contains unexpected trailing char; got %q`, token) + } + token = token[1 : len(token)-1] + token = strings.Replace(token, "\\'", "'", -1) + token = strings.Replace(token, `"`, `\"`, -1) + token = `"` + token + `"` + } + s, err := strconv.Unquote(token) + if err != nil { + return "", fmt.Errorf(`cannot parse string literal %q: %s`, token, err) + } + return s, nil +} + +func removeDuplicateTagFilters(tfs []storage.TagFilter) []storage.TagFilter { + tfsm := make(map[string]bool, len(tfs)) + tfsNew := tfs[:0] + bb := bbPool.Get() + for i := range tfs { + tf := &tfs[i] + bb.B = appendStringTagFilter(bb.B[:0], tf) + if tfsm[string(bb.B)] { + continue + } + tfsm[string(bb.B)] = true + tfsNew = append(tfsNew, *tf) + } + bbPool.Put(bb) + return tfsNew +} + +func (p *parser) parseFuncExpr() (*funcExpr, error) { + if !isIdentPrefix(p.lex.Token) { + return nil, fmt.Errorf(`funcExpr: unexpected token %q; want "ident"`, p.lex.Token) + } + + var fe funcExpr + fe.Name = p.lex.Token + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token != "(" { + return nil, fmt.Errorf(`funcExpr; unexpected token %q; want "("`, p.lex.Token) + } + args, err := p.parseArgListExpr() + if err != nil { + return nil, err + } + fe.Args = args + return &fe, nil +} + +func (p *parser) parseModifierExpr(me *modifierExpr) error { + if !isIdentPrefix(p.lex.Token) { + return fmt.Errorf(`modifierExpr: unexpected token %q; want "ident"`, p.lex.Token) + } + + me.Op = strings.ToLower(p.lex.Token) + + if err := p.lex.Next(); err != nil { + return err + } + if isBinaryOpJoinModifier(me.Op) && p.lex.Token != "(" { + // join modifier may miss ident list. + return nil + } + args, err := p.parseIdentList() + if err != nil { + return err + } + me.Args = args + return nil +} + +func (p *parser) parseIdentList() ([]string, error) { + if p.lex.Token != "(" { + return nil, fmt.Errorf(`identList: unexpected token %q; want "("`, p.lex.Token) + } + var idents []string + for { + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == ")" { + goto closeParensLabel + } + if !isIdentPrefix(p.lex.Token) { + return nil, fmt.Errorf(`identList: unexpected token %q; want "ident"`, p.lex.Token) + } + idents = append(idents, p.lex.Token) + if err := p.lex.Next(); err != nil { + return nil, err + } + switch p.lex.Token { + case ",": + continue + case ")": + goto closeParensLabel + default: + return nil, fmt.Errorf(`identList: unexpected token %q; want ",", ")"`, p.lex.Token) + } + } + +closeParensLabel: + if err := p.lex.Next(); err != nil { + return nil, err + } + return idents, nil +} + +func (p *parser) parseArgListExpr() ([]expr, error) { + if p.lex.Token != "(" { + return nil, fmt.Errorf(`argList: unexpected token %q; want "("`, p.lex.Token) + } + var args []expr + for { + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == ")" { + goto closeParensLabel + } + expr, err := p.parseExpr() + if err != nil { + return nil, err + } + args = append(args, expr) + switch p.lex.Token { + case ",": + continue + case ")": + goto closeParensLabel + default: + return nil, fmt.Errorf(`argList: unexpected token %q; want ",", ")"`, p.lex.Token) + } + } + +closeParensLabel: + if err := p.lex.Next(); err != nil { + return nil, err + } + return args, nil +} + +func getWithArgExpr(was []*withArgExpr, name string) *withArgExpr { + // Scan wes backwards, since certain expressions may override + // previously defined expressions + for i := len(was) - 1; i >= 0; i-- { + wa := was[i] + if wa.Name == name { + return wa + } + } + return nil +} + +func (p *parser) parseTagFilters() ([]*tagFilterExpr, error) { + if p.lex.Token != "{" { + return nil, fmt.Errorf(`tagFilters: unexpected token %q; want "{"`, p.lex.Token) + } + + var tfes []*tagFilterExpr + for { + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token == "}" { + goto closeBracesLabel + } + tfe, err := p.parseTagFilterExpr() + if err != nil { + return nil, err + } + tfes = append(tfes, tfe) + switch p.lex.Token { + case ",": + continue + case "}": + goto closeBracesLabel + default: + return nil, fmt.Errorf(`tagFilters: unexpected token %q; want ",", "}"`, p.lex.Token) + } + } + +closeBracesLabel: + if err := p.lex.Next(); err != nil { + return nil, err + } + return tfes, nil +} + +func (p *parser) parseTagFilterExpr() (*tagFilterExpr, error) { + if !isIdentPrefix(p.lex.Token) { + return nil, fmt.Errorf(`tagFilterExpr: unexpected token %q; want "ident"`, p.lex.Token) + } + var tfe tagFilterExpr + tfe.Key = p.lex.Token + if tfe.Key == "__name__" { + tfe.Key = "" + } + if err := p.lex.Next(); err != nil { + return nil, err + } + + switch p.lex.Token { + case "=": + // Nothing to do. + case "!=": + tfe.IsNegative = true + case "=~": + tfe.IsRegexp = true + case "!~": + tfe.IsNegative = true + tfe.IsRegexp = true + case ",", "}": + return &tfe, nil + default: + return nil, fmt.Errorf(`tagFilterExpr: unexpected token %q; want "=", "!=", "=~", "!~", ",", "}"`, p.lex.Token) + } + + if err := p.lex.Next(); err != nil { + return nil, err + } + se, err := p.parseStringExpr() + if err != nil { + return nil, err + } + tfe.Value = se + return &tfe, nil +} + +type tagFilterExpr struct { + Key string + Value *stringExpr + IsRegexp bool + IsNegative bool +} + +func (tfe *tagFilterExpr) String() string { + return fmt.Sprintf("[key=%q, value=%+v, isRegexp=%v, isNegative=%v]", tfe.Key, tfe.Value, tfe.IsRegexp, tfe.IsNegative) +} + +func (tfe *tagFilterExpr) toTagFilter() (*storage.TagFilter, error) { + if tfe.Value == nil || len(tfe.Value.tokens) > 0 { + logger.Panicf("BUG: tfe.Value must be already expanded; got %v", tfe.Value) + } + + var tf storage.TagFilter + tf.Key = []byte(tfe.Key) + tf.Value = []byte(tfe.Value.S) + tf.IsRegexp = tfe.IsRegexp + tf.IsNegative = tfe.IsNegative + if !tf.IsRegexp { + return &tf, nil + } + + // Verify regexp. + if _, err := compileRegexpAnchored(tfe.Value.S); err != nil { + return nil, fmt.Errorf("invalid regexp in %s=%q: %s", tf.Key, tf.Value, err) + } + return &tf, nil +} + +func (p *parser) parseWindowAndStep() (string, string, bool, error) { + if p.lex.Token != "[" { + return "", "", false, fmt.Errorf(`windowAndStep: unexpected token %q; want "["`, p.lex.Token) + } + err := p.lex.Next() + if err != nil { + return "", "", false, err + } + var window string + if !strings.HasPrefix(p.lex.Token, ":") { + window, err = p.parseDuration() + if err != nil { + return "", "", false, err + } + } + var step string + inheritStep := false + if strings.HasPrefix(p.lex.Token, ":") { + // Parse step + p.lex.Token = p.lex.Token[1:] + if p.lex.Token == "" { + if err := p.lex.Next(); err != nil { + return "", "", false, err + } + if p.lex.Token == "]" { + inheritStep = true + } + } + if p.lex.Token != "]" { + step, err = p.parseDuration() + if err != nil { + return "", "", false, err + } + } + } + if p.lex.Token != "]" { + return "", "", false, fmt.Errorf(`windowAndStep: unexpected token %q; want "]"`, p.lex.Token) + } + if err := p.lex.Next(); err != nil { + return "", "", false, err + } + return window, step, inheritStep, nil +} + +func (p *parser) parseOffset() (string, error) { + if !isOffset(p.lex.Token) { + return "", fmt.Errorf(`offset: unexpected token %q; want "offset"`, p.lex.Token) + } + if err := p.lex.Next(); err != nil { + return "", err + } + d, err := p.parseDuration() + if err != nil { + return "", err + } + return d, nil +} + +func (p *parser) parseDuration() (string, error) { + if !isDuration(p.lex.Token) { + return "", fmt.Errorf(`duration: unexpected token %q; want "duration"`, p.lex.Token) + } + d := p.lex.Token + if err := p.lex.Next(); err != nil { + return "", err + } + return d, nil +} + +// parseIdentExpr parses expressions starting with `ident` token. +func (p *parser) parseIdentExpr() (expr, error) { + // Look into the next-next token in order to determine how to parse + // the current expression. + if err := p.lex.Next(); err != nil { + return nil, err + } + if isEOF(p.lex.Token) || isOffset(p.lex.Token) { + p.lex.Prev() + return p.parseMetricExpr() + } + if isIdentPrefix(p.lex.Token) { + p.lex.Prev() + if isAggrFunc(p.lex.Token) { + return p.parseAggrFuncExpr() + } + return p.parseMetricExpr() + } + if isBinaryOp(p.lex.Token) { + p.lex.Prev() + return p.parseMetricExpr() + } + switch p.lex.Token { + case "(": + p.lex.Prev() + if isAggrFunc(p.lex.Token) { + return p.parseAggrFuncExpr() + } + return p.parseFuncExpr() + case "{", "[", ")", ",": + p.lex.Prev() + return p.parseMetricExpr() + default: + return nil, fmt.Errorf(`identExpr: unexpected token %q; want "(", "{", "[", ")", ","`, p.lex.Token) + } +} + +// IsMetricSelectorWithRollup verifies whether s contains PromQL metric selector +// wrapped into rollup. +// +// It returns the wrapped query with the corresponding window with offset. +func IsMetricSelectorWithRollup(s string) (childQuery string, window, offset string) { + expr, err := parsePromQLWithCache(s) + if err != nil { + return + } + re, ok := expr.(*rollupExpr) + if !ok || len(re.Window) == 0 || len(re.Step) > 0 { + return + } + me, ok := re.Expr.(*metricExpr) + if !ok || len(me.TagFilters) == 0 { + return + } + wrappedQuery := me.AppendString(nil) + return string(wrappedQuery), re.Window, re.Offset +} + +// ParseMetricSelector parses s containing PromQL metric selector +// and returns the corresponding TagFilters. +func ParseMetricSelector(s string) ([]storage.TagFilter, error) { + expr, err := parsePromQLWithCache(s) + if err != nil { + return nil, err + } + me, ok := expr.(*metricExpr) + if !ok { + return nil, fmt.Errorf("expecting metricSelector; got %q", expr.AppendString(nil)) + } + if len(me.TagFilters) == 0 { + return nil, fmt.Errorf("tagFilters cannot be empty") + } + return me.TagFilters, nil +} + +func (p *parser) parseMetricExpr() (*metricExpr, error) { + var me metricExpr + if isIdentPrefix(p.lex.Token) { + var tfe tagFilterExpr + tfe.Value = &stringExpr{ + tokens: []string{strconv.Quote(p.lex.Token)}, + } + me.tagFilters = append(me.tagFilters[:0], &tfe) + if err := p.lex.Next(); err != nil { + return nil, err + } + if p.lex.Token != "{" { + return &me, nil + } + } + tfes, err := p.parseTagFilters() + if err != nil { + return nil, err + } + me.tagFilters = append(me.tagFilters, tfes...) + return &me, nil +} + +func (p *parser) parseRollupExpr(arg expr) (expr, error) { + var re rollupExpr + re.Expr = arg + if p.lex.Token == "[" { + window, step, inheritStep, err := p.parseWindowAndStep() + if err != nil { + return nil, err + } + re.Window = window + re.Step = step + re.InheritStep = inheritStep + if !isOffset(p.lex.Token) { + return &re, nil + } + } + offset, err := p.parseOffset() + if err != nil { + return nil, err + } + re.Offset = offset + return &re, nil +} + +type expr interface { + // AppendString appends string representation of expr to dst. + AppendString(dst []byte) []byte +} + +type stringExpr struct { + S string + + // Composite string has non-empty tokens. + // They must be converted into S by expandWithExpr. + tokens []string +} + +func (se *stringExpr) AppendString(dst []byte) []byte { + return strconv.AppendQuote(dst, se.S) +} + +type numberExpr struct { + N float64 +} + +func (ne *numberExpr) AppendString(dst []byte) []byte { + return strconv.AppendFloat(dst, ne.N, 'g', -1, 64) +} + +type parensExpr []expr + +func (pe parensExpr) AppendString(dst []byte) []byte { + return appendStringArgListExpr(dst, pe) +} + +type binaryOpExpr struct { + Op string + + Bool bool + GroupModifier modifierExpr + JoinModifier modifierExpr + + Left expr + Right expr +} + +func (be *binaryOpExpr) AppendString(dst []byte) []byte { + if _, ok := be.Left.(*binaryOpExpr); ok { + dst = append(dst, '(') + dst = be.Left.AppendString(dst) + dst = append(dst, ')') + } else { + dst = be.Left.AppendString(dst) + } + dst = append(dst, ' ') + dst = append(dst, be.Op...) + if be.Bool { + dst = append(dst, " bool"...) + } + if be.GroupModifier.Op != "" { + dst = append(dst, ' ') + dst = be.GroupModifier.AppendString(dst) + } + if be.JoinModifier.Op != "" { + dst = append(dst, ' ') + dst = be.JoinModifier.AppendString(dst) + } + dst = append(dst, ' ') + if _, ok := be.Right.(*binaryOpExpr); ok { + dst = append(dst, '(') + dst = be.Right.AppendString(dst) + dst = append(dst, ')') + } else { + dst = be.Right.AppendString(dst) + } + return dst +} + +type modifierExpr struct { + Op string + + Args []string +} + +func (me *modifierExpr) AppendString(dst []byte) []byte { + dst = append(dst, me.Op...) + dst = append(dst, " ("...) + for i, arg := range me.Args { + dst = append(dst, arg...) + if i+1 < len(me.Args) { + dst = append(dst, ", "...) + } + } + dst = append(dst, ')') + return dst +} + +func appendStringArgListExpr(dst []byte, args []expr) []byte { + dst = append(dst, '(') + for i, arg := range args { + dst = arg.AppendString(dst) + if i+1 < len(args) { + dst = append(dst, ", "...) + } + } + dst = append(dst, ')') + return dst +} + +type funcExpr struct { + Name string + + Args []expr +} + +func (fe *funcExpr) AppendString(dst []byte) []byte { + dst = append(dst, fe.Name...) + dst = appendStringArgListExpr(dst, fe.Args) + return dst +} + +type aggrFuncExpr struct { + Name string + + Args []expr + + Modifier modifierExpr +} + +func (ae *aggrFuncExpr) AppendString(dst []byte) []byte { + dst = append(dst, ae.Name...) + dst = appendStringArgListExpr(dst, ae.Args) + if ae.Modifier.Op != "" { + dst = append(dst, ' ') + dst = ae.Modifier.AppendString(dst) + } + return dst +} + +type withExpr struct { + Was []*withArgExpr + Expr expr +} + +func (we *withExpr) AppendString(dst []byte) []byte { + dst = append(dst, "WITH ("...) + for i, wa := range we.Was { + dst = wa.AppendString(dst) + if i+1 < len(we.Was) { + dst = append(dst, ',') + } + } + dst = append(dst, ") "...) + dst = we.Expr.AppendString(dst) + return dst +} + +type withArgExpr struct { + Name string + Args []string + Expr expr +} + +func (wa *withArgExpr) AppendString(dst []byte) []byte { + dst = append(dst, wa.Name...) + if len(wa.Args) > 0 { + dst = append(dst, '(') + for i, arg := range wa.Args { + dst = append(dst, arg...) + if i+1 < len(wa.Args) { + dst = append(dst, ',') + } + } + dst = append(dst, ')') + } + dst = append(dst, " = "...) + dst = wa.Expr.AppendString(dst) + return dst +} + +type rollupExpr struct { + // The expression for the rollup. Usually it is metricExpr, but may be arbitary expr + // if subquery is used. https://prometheus.io/blog/2019/01/28/subquery-support/ + Expr expr + + // Window contains optional window value from square brackets + // + // For example, `http_requests_total[5m]` will have Window value `5m`. + Window string + + // Offset contains optional value from `offset` part. + // + // For example, `foobar{baz="aa"} offset 5m` will have Offset value `5m`. + Offset string + + // Step contains optional step value from square brackets. + // + // For example, `foobar[1h:3m]` will have Step value '3m'. + Step string + + // If set to true, then `foo[1h:]` would print the same + // instead of `foo[1h]`. + InheritStep bool +} + +func (re *rollupExpr) AppendString(dst []byte) []byte { + needParens := func() bool { + if _, ok := re.Expr.(*rollupExpr); ok { + return true + } + if _, ok := re.Expr.(*binaryOpExpr); ok { + return true + } + if ae, ok := re.Expr.(*aggrFuncExpr); ok && ae.Modifier.Op != "" { + return true + } + return false + }() + if needParens { + dst = append(dst, '(') + } + dst = re.Expr.AppendString(dst) + if needParens { + dst = append(dst, ')') + } + if len(re.Window) > 0 || re.InheritStep || len(re.Step) > 0 { + dst = append(dst, '[') + if len(re.Window) > 0 { + dst = append(dst, re.Window...) + } + if len(re.Step) > 0 { + dst = append(dst, ':') + dst = append(dst, re.Step...) + } else if re.InheritStep { + dst = append(dst, ':') + } + dst = append(dst, ']') + } + if len(re.Offset) > 0 { + dst = append(dst, " offset "...) + dst = append(dst, re.Offset...) + } + return dst +} + +type metricExpr struct { + // TagFilters contains a list of tag filters from curly braces. + // The first item may be the metric name. + TagFilters []storage.TagFilter + + // tagFilters must be expanded to TagFilters by expandWithExpr. + tagFilters []*tagFilterExpr +} + +func (me *metricExpr) AppendString(dst []byte) []byte { + tfs := me.TagFilters + if len(tfs) > 0 { + tf := &tfs[0] + if len(tf.Key) == 0 && !tf.IsNegative && !tf.IsRegexp { + dst = append(dst, tf.Value...) + tfs = tfs[1:] + } + } + if len(tfs) > 0 { + dst = append(dst, '{') + for i := range tfs { + dst = appendStringTagFilter(dst, &tfs[i]) + if i+1 < len(tfs) { + dst = append(dst, ", "...) + } + } + dst = append(dst, '}') + } else if len(me.TagFilters) == 0 { + dst = append(dst, "{}"...) + } + return dst +} + +func (me *metricExpr) IsEmpty() bool { + return len(me.TagFilters) == 0 +} + +func (me *metricExpr) IsOnlyMetricGroup() bool { + if !me.HasNonEmptyMetricGroup() { + return false + } + return len(me.TagFilters) == 1 +} + +func (me *metricExpr) HasNonEmptyMetricGroup() bool { + if len(me.TagFilters) == 0 { + return false + } + tf := &me.TagFilters[0] + return len(tf.Key) == 0 && !tf.IsNegative && !tf.IsRegexp +} + +func appendStringTagFilter(dst []byte, tf *storage.TagFilter) []byte { + if len(tf.Key) == 0 { + dst = append(dst, "__name__"...) + } else { + dst = append(dst, tf.Key...) + } + var op string + if tf.IsNegative { + if tf.IsRegexp { + op = "!~" + } else { + op = "!=" + } + } else { + if tf.IsRegexp { + op = "=~" + } else { + op = "=" + } + } + dst = append(dst, op...) + dst = strconv.AppendQuote(dst, string(tf.Value)) + return dst +} diff --git a/app/vmselect/promql/parser_test.go b/app/vmselect/promql/parser_test.go new file mode 100644 index 000000000..903e0389c --- /dev/null +++ b/app/vmselect/promql/parser_test.go @@ -0,0 +1,677 @@ +package promql + +import ( + "testing" +) + +func TestParseMetricSelectorSuccess(t *testing.T) { + f := func(s string) { + t.Helper() + tfs, err := ParseMetricSelector(s) + if err != nil { + t.Fatalf("unexpected error when parsing %q: %s", s, err) + } + if tfs == nil { + t.Fatalf("expecting non-nil tfs when parsing %q", s) + } + } + f("foo") + f(":foo") + f(" :fo:bar.baz") + f(`a{}`) + f(`{foo="bar"}`) + f(`{:f:oo=~"bar.+"}`) + f(`foo {bar != "baz"}`) + f(` foo { bar !~ "^ddd(x+)$", a="ss", __name__="sffd"} `) + f(`(foo)`) +} + +func TestParseMetricSelectorError(t *testing.T) { + f := func(s string) { + t.Helper() + tfs, err := ParseMetricSelector(s) + if err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + if tfs != nil { + t.Fatalf("expecting nil tfs when parsing %q", s) + } + } + f("") + f(`{}`) + f(`foo bar`) + f(`foo+bar`) + f(`sum(bar)`) + f(`x{y}`) + f(`x{y+z}`) + f(`foo[5m]`) + f(`foo offset 5m`) +} + +func TestParsePromQLSuccess(t *testing.T) { + another := func(s string, sExpected string) { + t.Helper() + + e, err := parsePromQL(s) + if err != nil { + t.Fatalf("unexpected error when parsing %q: %s", s, err) + } + res := e.AppendString(nil) + if string(res) != sExpected { + t.Fatalf("unexpected string constructed;\ngot\n%q\nwant\n%q", res, sExpected) + } + } + same := func(s string) { + t.Helper() + another(s, s) + } + + // metricExpr + same(`{}`) + same(`{}[5m]`) + same(`{}[5m:]`) + same(`{}[:]`) + another(`{}[: ]`, `{}[:]`) + same(`{}[:3s]`) + another(`{}[: 3s ]`, `{}[:3s]`) + same(`{}[5m:3s]`) + another(`{}[ 5m : 3s ]`, `{}[5m:3s]`) + same(`{} offset 5m`) + same(`{}[5m] offset 10y`) + same(`{}[5.3m:3.4s] offset 10y`) + same(`{}[:3.4s] offset 10y`) + same(`{Foo="bAR"}`) + same(`{foo="bar"}`) + same(`{foo="bar"}[5m]`) + same(`{foo="bar"}[5m:]`) + same(`{foo="bar"}[5m:3s]`) + same(`{foo="bar"} offset 10y`) + same(`{foo="bar"}[5m] offset 10y`) + same(`{foo="bar"}[5m:3s] offset 10y`) + another(`{foo="bar"}[5m] oFFSEt 10y`, `{foo="bar"}[5m] offset 10y`) + same("METRIC") + same("metric") + same("m_e:tri44:_c123") + another("-metric", "0 - metric") + same(`metric offset 10h`) + same("metric[5m]") + same("metric[5m:3s]") + same("metric[5m] offset 10h") + same("metric[5m:3s] offset 10h") + same("metric[5i:3i] offset 10i") + same(`metric{foo="bar"}`) + same(`metric{foo="bar"} offset 10h`) + same(`metric{foo!="bar"}[2d]`) + same(`metric{foo="bar"}[2d] offset 10h`) + same(`metric{foo="bar", b="sdfsdf"}[2d:3h] offset 10h`) + another(` metric { foo = "bar" } [ 2d ] offset 10h `, `metric{foo="bar"}[2d] offset 10h`) + // metric name matching keywords + same("rate") + same("RATE") + same("by") + same("BY") + same("bool") + same("BOOL") + same("unless") + same("UNLESS") + same("Ignoring") + same("with") + same("WITH") + same("With") + // Metric filters ending with comma + another(`m{foo="bar",}`, `m{foo="bar"}`) + // String concat in tag value + another(`m{foo="bar" + "baz"}`, `m{foo="barbaz"}`) + + // Valid regexp + same(`foo{bar=~"x"}`) + same(`foo{bar=~"^x"}`) + same(`foo{bar=~"^x$"}`) + same(`foo{bar=~"^(a[bc]|d)$"}`) + same(`foo{bar!~"x"}`) + same(`foo{bar!~"^x"}`) + same(`foo{bar!~"^x$"}`) + same(`foo{bar!~"^(a[bc]|d)$"}`) + + // stringExpr + same(`""`) + same(`"\n\t\r 12:{}[]()44"`) + another(`''`, `""`) + another("``", `""`) + another(" `foo\"b'ar` ", "\"foo\\\"b'ar\"") + another(` 'foo\'bar"BAZ' `, `"foo'bar\"BAZ"`) + // string concat + another(`"foo"+'bar'`, `"foobar"`) + + // numberExpr + same(`1`) + same(`1.23`) + same(`0.23`) + same(`1.2e+45`) + same(`1.2e-45`) + same(`-1`) + same(`-1.23`) + same(`-0.23`) + same(`-1.2e+45`) + same(`-1.2e-45`) + same(`-1.2e-45`) + another(`12.5E34`, `1.25e+35`) + another(`-.2`, `-0.2`) + another(`-.2E-2`, `-0.002`) + same(`NaN`) + another(`Inf`, `+Inf`) + another(`+Inf`, `+Inf`) + another(`-Inf`, `-Inf`) + + // binaryOpExpr + another(`NaN + 2 *3 * Inf`, `NaN`) + another(`Inf - Inf`, `NaN`) + another(`Inf + Inf`, `+Inf`) + another(`-m`, `0 - m`) + same(`m + ignoring () n[5m]`) + another(`M + IGNORING () N[5m]`, `M + ignoring () N[5m]`) + same(`m + on (foo) n[5m]`) + another(`m + ON (Foo) n[5m]`, `m + on (Foo) n[5m]`) + same(`m + ignoring (a, b) n[5m]`) + another(`1 or 2`, `1`) + another(`1 and 2`, `1`) + another(`1 unless 2`, `NaN`) + another(`1 default 2`, `1`) + another(`1 default NaN`, `1`) + another(`NaN default 2`, `2`) + another(`1 > 2`, `NaN`) + another(`1 > bool 2`, `0`) + another(`3 >= 2`, `3`) + another(`3 <= bool 2`, `0`) + another(`1 + -2 - 3`, `-4`) + another(`1 / 0 + 2`, `+Inf`) + another(`2 + -1 / 0`, `-Inf`) + another(`-1 ^ 0.5`, `NaN`) + another(`512.5 - (1 + 3) * (2 ^ 2) ^ 3`, `256.5`) + another(`1 == bool 1 != bool 24 < bool 4 > bool -1`, `1`) + another(`1 == bOOl 1 != BOOL 24 < Bool 4 > booL -1`, `1`) + another(`m1+on(foo)group_left m2`, `m1 + on (foo) group_left () m2`) + another(`M1+ON(FOO)GROUP_left M2`, `M1 + on (FOO) group_left () M2`) + same(`m1 + on (foo) group_right () m2`) + same(`m1 + on (foo, bar) group_right (x, y) m2`) + another(`m1 + on (foo, bar,) group_right (x, y,) m2`, `m1 + on (foo, bar) group_right (x, y) m2`) + same(`m1 == bool on (foo, bar) group_right (x, y) m2`) + another(`5 - 1 + 3 * 2 ^ 2 ^ 3 - 2 OR Metric {Bar= "Baz", aaa!="bb",cc=~"dd" ,zz !~"ff" } `, + `770 or Metric{Bar="Baz", aaa!="bb", cc=~"dd", zz!~"ff"}`) + same(`"foo" + bar()`) + same(`"foo" + bar{x="y"}`) + same(`("foo"[3s] + bar{x="y"})[5m:3s] offset 10s`) + same(`("foo"[3s] + bar{x="y"})[5i:3i] offset 10i`) + same(`bar + "foo" offset 3s`) + same(`bar + "foo" offset 3i`) + another(`1+2 if 2>3`, `NaN`) + another(`1+4 if 2<3`, `5`) + another(`2+6 default 3 if 2>3`, `8`) + another(`2+6 if 2>3 default NaN`, `NaN`) + another(`42 if 3>2 if 2+2<5`, `42`) + another(`42 if 3>2 if 2+2>=5`, `NaN`) + another(`1+2 ifnot 2>3`, `3`) + another(`1+4 ifnot 2<3`, `NaN`) + another(`2+6 default 3 ifnot 2>3`, `8`) + another(`2+6 ifnot 2>3 default NaN`, `8`) + another(`42 if 3>2 ifnot 2+2<5`, `NaN`) + another(`42 if 3>2 ifnot 2+2>=5`, `42`) + + // parensExpr + another(`(-foo + ((bar) / (baz))) + ((23))`, `((0 - foo) + (bar / baz)) + 23`) + another(`(FOO + ((Bar) / (baZ))) + ((23))`, `(FOO + (Bar / baZ)) + 23`) + same(`(foo, bar)`) + another(`1+(foo, bar,)`, `1 + (foo, bar)`) + another(`((foo(bar,baz)), (1+(2)+(3,4)+()))`, `(foo(bar, baz), (3 + (3, 4)) + ())`) + same(`()`) + + // funcExpr + same(`f()`) + another(`f(x,)`, `f(x)`) + another(`-f()-Ff()`, `(0 - f()) - Ff()`) + same(`F()`) + another(`+F()`, `F()`) + another(`++F()`, `F()`) + another(`--F()`, `0 - (0 - F())`) + same(`f(http_server_request)`) + same(`f(http_server_request)[4s:5m] offset 10m`) + same(`f(http_server_request)[4i:5i] offset 10i`) + same(`F(HttpServerRequest)`) + same(`f(job, foo)`) + same(`F(Job, Foo)`) + another(` FOO (bar) + f ( m ( ),ff(1 + ( 2.5)) ,M[5m ] , "ff" )`, `FOO(bar) + f(m(), ff(3.5), M[5m], "ff")`) + // funcName matching keywords + same(`by(2)`) + same(`BY(2)`) + same(`or(2)`) + same(`OR(2)`) + same(`bool(2)`) + same(`BOOL(2)`) + same(`rate(rate(m))`) + same(`rate(rate(m[5m]))`) + same(`rate(rate(m[5m])[1h:])`) + same(`rate(rate(m[5m])[1h:3s])`) + + // aggrFuncExpr + same(`sum(http_server_request) by ()`) + same(`sum(http_server_request) by (job)`) + same(`sum(http_server_request) without (job, foo)`) + another(`sum(x,y,) without (a,b,)`, `sum(x, y) without (a, b)`) + another(`sum by () (xx)`, `sum(xx) by ()`) + another(`sum by (s) (xx)[5s]`, `(sum(xx) by (s))[5s]`) + another(`SUM BY (ZZ, aa) (XX)`, `sum(XX) by (ZZ, aa)`) + another(`sum without (a, b) (xx,2+2)`, `sum(xx, 4) without (a, b)`) + another(`Sum WIthout (a, B) (XX,2+2)`, `sum(XX, 4) without (a, B)`) + same(`sum(a) or sum(b)`) + same(`sum(a) by () or sum(b) without (x, y)`) + same(`sum(a) + sum(b)`) + same(`sum(x) * (1 + sum(a))`) + + // All the above + another(`Sum(Ff(M) * M{X=""}[5m] Offset 7m - 123, 35) BY (X, y) * F2("Test")`, + `sum((Ff(M) * M{X=""}[5m] offset 7m) - 123, 35) by (X, y) * F2("Test")`) + another(`# comment + Sum(Ff(M) * M{X=""}[5m] Offset 7m - 123, 35) BY (X, y) # yet another comment + * F2("Test")`, + `sum((Ff(M) * M{X=""}[5m] offset 7m) - 123, 35) by (X, y) * F2("Test")`) + + // withExpr + another(`with () x`, `x`) + another(`with (x=1,) x`, `1`) + another(`with (x = m offset 5h) x + x`, `m offset 5h + m offset 5h`) + another(`with (x = m offset 5i) x + x`, `m offset 5i + m offset 5i`) + another(`with (foo = bar{x="x"}) 1`, `1`) + another(`with (foo = bar{x="x"}) "x"`, `"x"`) + another(`with (f="x") f`, `"x"`) + another(`with (foo = bar{x="x"}) x{x="y"}`, `x{x="y"}`) + another(`with (foo = bar{x="x"}) 1+1`, `2`) + another(`with (foo = bar{x="x"}) f()`, `f()`) + another(`with (foo = bar{x="x"}) sum(x)`, `sum(x)`) + another(`with (foo = bar{x="x"}) baz{foo="bar"}`, `baz{foo="bar"}`) + another(`with (foo = bar) baz`, `baz`) + another(`with (foo = bar) foo + foo{a="b"}`, `bar + bar{a="b"}`) + another(`with (foo = bar, bar=baz + f()) test`, `test`) + another(`with (ct={job="test"}) a{ct} + ct() + f({ct="x"})`, `(a{job="test"} + {job="test"}) + f({ct="x"})`) + another(`with (ct={job="test", i="bar"}) ct + {ct, x="d"} + foo{ct, ct} + ctx(1)`, + `(({job="test", i="bar"} + {job="test", i="bar", x="d"}) + foo{job="test", i="bar"}) + ctx(1)`) + another(`with (foo = bar) {__name__=~"foo"}`, `{__name__=~"foo"}`) + another(`with (foo = bar) {__name__="foo"}`, `bar`) + another(`with (foo = bar) {__name__="foo", x="y"}`, `bar{x="y"}`) + another(`with (foo(bar) = {__name__!="bar"}) foo(x)`, `{__name__!="bar"}`) + another(`with (foo(bar) = {__name__="bar"}) foo(x)`, `x`) + // override ttf to something new. + another(`with (ttf = a) ttf + b`, `a + b`) + // override ttf to ru + another(`with (ttf = ru(m, n)) ttf`, `(clamp_min(n - clamp_min(m, 0), 0) / clamp_min(n, 0)) * 100`) + + // Verify withExpr recursion and forward reference + another(`with (x = x+y, y = x+x) y ^ 2`, `((x + y) + (x + y)) ^ 2`) + another(`with (f1(x)=f2(x), f2(x)=f1(x)^2) f1(foobar)`, `f2(foobar)`) + another(`with (f1(x)=f2(x), f2(x)=f1(x)^2) f2(foobar)`, `f2(foobar) ^ 2`) + + // Verify withExpr funcs + another(`with (x() = y+1) x`, `y + 1`) + another(`with (x(foo) = foo+1) x(a)`, `a + 1`) + another(`with (x(a, b) = a + b) x(foo, bar)`, `foo + bar`) + another(`with (x(a, b) = a + b) x(foo, x(1, 2))`, `foo + 3`) + another(`with (x(a) = sum(a) by (b)) x(xx) / x(y)`, `sum(xx) by (b) / sum(y) by (b)`) + another(`with (f(a,f,x)=ff(x,f,a)) f(f(x,y,z),1,2)`, `ff(2, 1, ff(z, y, x))`) + another(`with (f(x)=1+f(x)) f(foo{bar="baz"})`, `1 + f(foo{bar="baz"})`) + another(`with (a=foo, y=bar, f(a)= a+a+y) f(x)`, `(x + x) + bar`) + another(`with (f(a, b) = m{a, b}) f({a="x", b="y"}, {c="d"})`, `m{a="x", b="y", c="d"}`) + another(`with (xx={a="x"}, f(a, b) = m{a, b}) f({xx, b="y"}, {c="d"})`, `m{a="x", b="y", c="d"}`) + another(`with (x() = {b="c"}) foo{x}`, `foo{b="c"}`) + another(`with (f(x)=x{foo="bar"} offset 5m) f(m offset 10m)`, `(m{foo="bar"} offset 10m) offset 5m`) + another(`with (f(x)=x{foo="bar",bas="a"}[5m]) f(m[10m] offset 3s)`, `(m{foo="bar", bas="a"}[10m] offset 3s)[5m]`) + another(`with (f(x)=x{foo="bar"}[5m] offset 10m) f(m{x="y"})`, `m{x="y", foo="bar"}[5m] offset 10m`) + another(`with (f(x)=x{foo="bar"}[5m] offset 10m) f({x="y", foo="bar", foo="bar"})`, `{x="y", foo="bar"}[5m] offset 10m`) + another(`with (f(m, x)=m{x}[5m] offset 10m) f(foo, {})`, `foo[5m] offset 10m`) + another(`with (f(m, x)=m{x, bar="baz"}[5m] offset 10m) f(foo, {})`, `foo{bar="baz"}[5m] offset 10m`) + another(`with (f(x)=x[5m] offset 3s) f(foo[3m]+bar)`, `(foo[3m] + bar)[5m] offset 3s`) + another(`with (f(x)=x[5m:3s] oFFsEt 1.5m) f(sum(s) by (a,b))`, `(sum(s) by (a, b))[5m:3s] offset 1.5m`) + another(`with (x="a", y=x) y+"bc"`, `"abc"`) + another(`with (x="a", y="b"+x) "we"+y+"z"+f()`, `"webaz" + f()`) + another(`with (f(x) = m{foo=x+"y", bar="y"+x, baz=x} + x) f("qwe")`, `m{foo="qwey", bar="yqwe", baz="qwe"} + "qwe"`) + + // Verify withExpr for aggr func modifiers + another(`with (f(x) = sum(m) by (x)) f(foo)`, `sum(m) by (foo)`) + another(`with (f(x) = sum(m) by (x)) f((foo, bar, foo))`, `sum(m) by (foo, bar)`) + another(`with (f(x) = sum(m) without (x,y)) f((a, b))`, `sum(m) without (a, b, y)`) + another(`with (f(x) = sum(m) without (y,x)) f((a, y))`, `sum(m) without (y, a)`) + another(`with (f(x,y) = a + on (x,y) group_left (y,bar) b) f(foo,())`, `a + on (foo) group_left (bar) b`) + another(`with (f(x,y) = a + on (x,y) group_left (y,bar) b) f((foo),())`, `a + on (foo) group_left (bar) b`) + another(`with (f(x,y) = a + on (x,y) group_left (y,bar) b) f((foo,xx),())`, `a + on (foo, xx) group_left (bar) b`) + + // Verify nested with exprs + another(`with (f(x) = (with(x=y) x) + x) f(z)`, `y + z`) + another(`with (x=foo) f(a, with (y=x) y)`, `f(a, foo)`) + another(`with (x=foo) a * x + (with (y=x) y) / y`, `(a * foo) + (foo / y)`) + another(`with (x = with (y = foo) y + x) x/x`, `(foo + x) / (foo + x)`) + another(`with ( + x = {foo="bar"}, + q = m{x, y="1"}, + f(x) = + with ( + z(y) = x + y * q + ) + z(foo) / f(x) + ) + f(a)`, `(a + (foo * m{foo="bar", y="1"})) / f(a)`) + + // complex withExpr + another(`WITH ( + treshold = (0.9), + commonFilters = {job="cacher", instance=~"1.2.3.4"}, + hits = rate(cache{type="hit", commonFilters}[5m]), + miss = rate(cache{type="miss", commonFilters}[5m]), + sumByInstance(arg) = sum(arg) by (instance), + hitRatio = sumByInstance(hits) / sumByInstance(hits + miss) + ) + hitRatio < treshold`, + `(sum(rate(cache{type="hit", job="cacher", instance=~"1.2.3.4"}[5m])) by (instance) / sum(rate(cache{type="hit", job="cacher", instance=~"1.2.3.4"}[5m]) + rate(cache{type="miss", job="cacher", instance=~"1.2.3.4"}[5m])) by (instance)) < 0.9`) + another(`WITH ( + x2(x) = x^2, + f(x, y) = x2(x) + x*y + x2(y) + ) + f(a, 3) + `, `((a ^ 2) + (a * 3)) + 9`) + another(`WITH ( + x2(x) = x^2, + f(x, y) = x2(x) + x*y + x2(y) + ) + f(2, 3) + `, `19`) + another(`WITH ( + commonFilters = {instance="foo"}, + timeToFuckup(currv, maxv) = (maxv - currv) / rate(currv) + ) + timeToFuckup(diskUsage{commonFilters}, maxDiskSize{commonFilters})`, + `(maxDiskSize{instance="foo"} - diskUsage{instance="foo"}) / rate(diskUsage{instance="foo"})`) + another(`WITH ( + commonFilters = {job="foo", instance="bar"}, + sumRate(m, cf) = sum(rate(m{cf})) by (job, instance), + hitRate(hits, misses) = sumRate(hits, commonFilters) / (sumRate(hits, commonFilters) + sumRate(misses, commonFilters)) + ) + hitRate(cacheHits, cacheMisses)`, + `sum(rate(cacheHits{job="foo", instance="bar"})) by (job, instance) / (sum(rate(cacheHits{job="foo", instance="bar"})) by (job, instance) + sum(rate(cacheMisses{job="foo", instance="bar"})) by (job, instance))`) + another(`with(y=123,z=5) union(with(y=3,f(x)=x*y) f(2) + f(3), with(x=5,y=2) x*y*z)`, `union(15, 50)`) +} + +func TestParsePromQLError(t *testing.T) { + f := func(s string) { + t.Helper() + + e, err := parsePromQL(s) + if err == nil { + t.Fatalf("expecting non-nil error when parsing %q", s) + } + if e != nil { + t.Fatalf("expecting nil expr when parsing %q", s) + } + } + + // an empty string + f("") + f(" \t\b\r\n ") + + // invalid metricExpr + f(`{__name__="ff"} offset 55`) + f(`{__name__="ff"} offset -5m`) + f(`foo[55]`) + f(`m[-5m]`) + f(`{`) + f(`foo{`) + f(`foo{bar`) + f(`foo{bar=`) + f(`foo{bar="baz"`) + f(`foo{bar="baz", `) + f(`foo{123="23"}`) + f(`foo{foo}`) + f(`foo{,}`) + f(`foo{,foo="bar"}`) + f(`foo{foo=}`) + f(`foo{foo="ba}`) + f(`foo{"foo"="bar"}`) + f(`foo{$`) + f(`foo{a $`) + f(`foo{a="b",$`) + f(`foo{a="b"}$`) + f(`[`) + f(`[]`) + f(`f[5m]$`) + f(`[5m]`) + f(`[5m] offset 4h`) + f(`m[5m] offset $`) + f(`m[5m] offset 5h $`) + f(`m[]`) + f(`m[-5m]`) + f(`m[5m:`) + f(`m[5m:-`) + f(`m[5m:-1`) + f(`m[5m:-1]`) + f(`m[:`) + f(`m[:-`) + f(`m[:1]`) + f(`m[:-1m]`) + f(`m[5]`) + f(`m[[5m]]`) + f(`m[foo]`) + f(`m["ff"]`) + f(`m[10m`) + f(`m[123`) + f(`m["ff`) + f(`m[(f`) + f(`fd}`) + f(`]`) + f(`m $`) + f(`m{,}`) + f(`m{x=y}`) + f(`m{x=y/5}`) + f(`m{x=y+5}`) + + // Invalid regexp + f(`foo{bar=~"x["}`) + f(`foo{bar=~"x("}`) + f(`foo{bar=~"x)"}`) + f(`foo{bar!~"x["}`) + f(`foo{bar!~"x("}`) + f(`foo{bar!~"x)"}`) + + // invalid stringExpr + f(`'`) + f(`"`) + f("`") + f(`"foo`) + f(`'foo`) + f("`foo") + f(`"foo\"bar`) + f(`'foo\'bar`) + f("`foo\\`bar") + f(`"" $`) + f(`"foo" +`) + f(`n{"foo" + m`) + + // invalid numberExpr + f(`12.`) + f(`1.2e`) + f(`23e-`) + f(`23E+`) + f(`.`) + f(`-12.`) + f(`-1.2e`) + f(`-23e-`) + f(`-23E+`) + f(`-.`) + f(`-1$$`) + f(`-$$`) + f(`+$$`) + f(`23 $$`) + + // invalid binaryOpExpr + f(`+`) + f(`1 +`) + f(`1 + 2.`) + f(`3 unless`) + f(`23 + on (foo)`) + f(`m + on (,) m`) + f(`3 * ignoring`) + f(`m * on (`) + f(`m * on (foo`) + f(`m * on (foo,`) + f(`m * on (foo,)`) + f(`m * on (,foo)`) + f(`m * on (,)`) + f(`m == bool (bar) baz`) + f(`m == bool () baz`) + f(`m * by (baz) n`) + f(`m + bool group_left m2`) + f(`m + on () group_left (`) + f(`m + on () group_left (,`) + f(`m + on () group_left (,foo`) + f(`m + on () group_left (foo,)`) + f(`m + on () group_left (,foo)`) + f(`m + on () group_left (foo)`) + f(`m + on () group_right (foo) (m`) + f(`m or ignoring () group_left () n`) + f(`1 + bool 2`) + f(`m % bool n`) + f(`m * bool baz`) + f(`M * BOoL BaZ`) + f(`foo unless ignoring (bar) group_left xxx`) + f(`foo or bool bar`) + f(`foo == bool $$`) + f(`"foo" + bar`) + + // invalid parensExpr + f(`(`) + f(`($`) + f(`(+`) + f(`(1`) + f(`(m+`) + f(`1)`) + f(`(,)`) + f(`(1)$`) + + // invalid funcExpr + f(`f $`) + f(`f($)`) + f(`f[`) + f(`f()$`) + f(`f(`) + f(`f(foo`) + f(`f(f,`) + f(`f(,`) + f(`f(,)`) + f(`f(,foo)`) + f(`f(,foo`) + f(`f(foo,$`) + f(`f() by (a)`) + f(`f without (x) (y)`) + f(`f() foo (a)`) + f(`f bar (x) (b)`) + f(`f bar (x)`) + + // invalid aggrFuncExpr + f(`sum(`) + f(`sum $`) + f(`sum [`) + f(`sum($)`) + f(`sum()$`) + f(`sum(foo) ba`) + f(`sum(foo) ba()`) + f(`sum(foo) by`) + f(`sum(foo) without x`) + f(`sum(foo) aaa`) + f(`sum(foo) aaa x`) + f(`sum() by $`) + f(`sum() by (`) + f(`sum() by ($`) + f(`sum() by (a`) + f(`sum() by (a $`) + f(`sum() by (a ]`) + f(`sum() by (a)$`) + f(`sum() by (,`) + f(`sum() by (a,$`) + f(`sum() by (,)`) + f(`sum() by (,a`) + f(`sum() by (,a)`) + f(`sum() on (b)`) + f(`sum() bool`) + f(`sum() group_left`) + f(`sum() group_right(x)`) + f(`sum ba`) + f(`sum ba ()`) + f(`sum by (`) + f(`sum by (a`) + f(`sum by (,`) + f(`sum by (,)`) + f(`sum by (,a`) + f(`sum by (,a)`) + f(`sum by (a)`) + f(`sum by (a) (`) + f(`sum by (a) [`) + f(`sum by (a) {`) + f(`sum by (a) (b`) + f(`sum by (a) (b,`) + f(`sum by (a) (,)`) + f(`avg by (a) (,b)`) + f(`sum by (x) (y) by (z)`) + f(`sum(m) by (1)`) + + // invalid withExpr + f(`with $`) + f(`with a`) + f(`with a=b c`) + f(`with (`) + f(`with (x=b)$`) + f(`with ($`) + f(`with (foo`) + f(`with (foo $`) + f(`with (x y`) + f(`with (x =`) + f(`with (x = $`) + f(`with (x= y`) + f(`with (x= y $`) + f(`with (x= y)`) + f(`with (x=(`) + f(`with (x=[)`) + f(`with (x=() x)`) + f(`with ($$)`) + f(`with (x $$`) + f(`with (x = $$)`) + f(`with (x = foo) bar{x}`) + f(`with (x = {foo="bar"}[5m]) bar{x}`) + f(`with (x = {foo="bar"} offset 5m) bar{x}`) + f(`with (x = a, x = b) c`) + f(`with (x(a, a) = b) c`) + f(`with (x=m{f="x"}) foo{x}`) + f(`with (sum = x) y`) + f(`with (rate(a) = b) c`) + f(`with (clamp_min=x) y`) + f(`with (f()`) + f(`with (a=b c=d) e`) + f(`with (f(x)=x^2) m{x}`) + f(`with (f(x)=ff()) m{x}`) + f(`with (f(x`) + f(`with (x=m) a{x} + b`) + f(`with (x=m) b + a{x}`) + f(`with (x=m) f(b, a{x})`) + f(`with (x=m) sum(a{x})`) + f(`with (x=m) (a{x})`) + f(`with (f(a)=a) f`) + f(`with (f(x)=x{foo="bar"}) f(1)`) + f(`with (f(x)=x{foo="bar"}) f(m + n)`) + f(`with (f = with`) + f(`with (,)`) + f(`with (1) 2`) + f(`with (f(1)=2) 3`) + f(`with (f(,)=x) x`) + f(`with (x(a) = {b="c"}) foo{x}`) + f(`with (f(x) = m{foo=xx}) f("qwe")`) + f(`a + with(f(x)=x) f`) + f(`with (f(x) = x, y = sum(m) by (f)) y`) + f(`with (f(x) = sum(m) by (x)) f({foo="bar"})`) + f(`with (f(x) = sum(m) by (x)) f((xx(), {foo="bar"}))`) + f(`with (f(x) = m + on (x) n) f(xx())`) + f(`with (f(x) = m + on (a) group_right (x) n) f(xx())`) +} diff --git a/app/vmselect/promql/regexp_cache.go b/app/vmselect/promql/regexp_cache.go new file mode 100644 index 000000000..51b16ba39 --- /dev/null +++ b/app/vmselect/promql/regexp_cache.go @@ -0,0 +1,102 @@ +package promql + +import ( + "fmt" + "regexp" + "sync" + "sync/atomic" + + "github.com/VictoriaMetrics/metrics" +) + +func compileRegexpAnchored(re string) (*regexp.Regexp, error) { + rcv := regexpCacheV.Get(re) + if rcv != nil { + return rcv.r, rcv.err + } + regexAnchored := fmt.Sprintf("^(?:%s)$", re) + r, err := regexp.Compile(regexAnchored) + rcv = ®expCacheValue{ + r: r, + err: err, + } + regexpCacheV.Put(re, rcv) + return rcv.r, rcv.err +} + +var regexpCacheV = func() *regexpCache { + rc := ®expCache{ + m: make(map[string]*regexpCacheValue), + } + metrics.NewGauge(`vm_cache_requests_total{type="promql/regexp"}`, func() float64 { + return float64(rc.Requests()) + }) + metrics.NewGauge(`vm_cache_misses_total{type="promql/regexp"}`, func() float64 { + return float64(rc.Misses()) + }) + metrics.NewGauge(`vm_cache_entries{type="promql/regexp"}`, func() float64 { + return float64(rc.Len()) + }) + return rc +}() + +const regexpCacheMaxLen = 10e3 + +type regexpCacheValue struct { + r *regexp.Regexp + err error +} + +type regexpCache struct { + m map[string]*regexpCacheValue + mu sync.RWMutex + + requests uint64 + misses uint64 +} + +func (rc *regexpCache) Requests() uint64 { + return atomic.LoadUint64(&rc.requests) +} + +func (rc *regexpCache) Misses() uint64 { + return atomic.LoadUint64(&rc.misses) +} + +func (rc *regexpCache) Len() uint64 { + rc.mu.RLock() + n := len(rc.m) + rc.mu.RUnlock() + return uint64(n) +} + +func (rc *regexpCache) Get(regexp string) *regexpCacheValue { + atomic.AddUint64(&rc.requests, 1) + + rc.mu.RLock() + rcv := rc.m[regexp] + rc.mu.RUnlock() + + if rc == nil { + atomic.AddUint64(&rc.misses, 1) + } + return rcv +} + +func (rc *regexpCache) Put(regexp string, rcv *regexpCacheValue) { + rc.mu.Lock() + overflow := len(rc.m) - regexpCacheMaxLen + if overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(rc.m)) * 0.1) + for k := range rc.m { + delete(rc.m, k) + overflow-- + if overflow <= 0 { + break + } + } + } + rc.m[regexp] = rcv + rc.mu.Unlock() +} diff --git a/app/vmselect/promql/rollup.go b/app/vmselect/promql/rollup.go new file mode 100644 index 000000000..7bc099290 --- /dev/null +++ b/app/vmselect/promql/rollup.go @@ -0,0 +1,763 @@ +package promql + +import ( + "fmt" + "math" + "sort" + "strings" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/valyala/histogram" +) + +var rollupFuncs = map[string]newRollupFunc{ + "default_rollup": newRollupFuncOneArg(rollupDefault), // default rollup func + + // Standard rollup funcs from PromQL. + // See funcs accepting range-vector on https://prometheus.io/docs/prometheus/latest/querying/functions/ . + "changes": newRollupFuncOneArg(rollupChanges), + "delta": newRollupFuncOneArg(rollupDelta), + "deriv": newRollupFuncOneArg(rollupDeriv), + "holt_winters": newRollupHoltWinters, + "idelta": newRollupFuncOneArg(rollupIdelta), + "increase": newRollupFuncOneArg(rollupDelta), // + rollupFuncsRemoveCounterResets + "irate": newRollupFuncOneArg(rollupIderiv), // + rollupFuncsRemoveCounterResets + "predict_linear": newRollupPredictLinear, + "rate": newRollupFuncOneArg(rollupDeriv), // + rollupFuncsRemoveCounterResets + "resets": newRollupFuncOneArg(rollupResets), + "avg_over_time": newRollupFuncOneArg(rollupAvg), + "min_over_time": newRollupFuncOneArg(rollupMin), + "max_over_time": newRollupFuncOneArg(rollupMax), + "sum_over_time": newRollupFuncOneArg(rollupSum), + "count_over_time": newRollupFuncOneArg(rollupCount), + "quantile_over_time": newRollupQuantile, + "stddev_over_time": newRollupFuncOneArg(rollupStddev), + "stdvar_over_time": newRollupFuncOneArg(rollupStdvar), + + // Additional rollup funcs. + "first_over_time": newRollupFuncOneArg(rollupFirst), + "last_over_time": newRollupFuncOneArg(rollupLast), + "distinct_over_time": newRollupFuncOneArg(rollupDistinct), + "integrate": newRollupFuncOneArg(rollupIntegrate), + "ideriv": newRollupFuncOneArg(rollupIderiv), + "rollup": newRollupFuncOneArg(rollupFake), + "rollup_rate": newRollupFuncOneArg(rollupFake), // + rollupFuncsRemoveCounterResets + "rollup_deriv": newRollupFuncOneArg(rollupFake), + "rollup_delta": newRollupFuncOneArg(rollupFake), + "rollup_increase": newRollupFuncOneArg(rollupFake), // + rollupFuncsRemoveCounterResets +} + +var rollupFuncsRemoveCounterResets = map[string]bool{ + "increase": true, + "irate": true, + "rate": true, + "rollup_rate": true, + "rollup_increase": true, +} + +var rollupFuncsKeepMetricGroup = map[string]bool{ + "default_rollup": true, + "avg_over_time": true, + "min_over_time": true, + "max_over_time": true, + "quantile_over_time": true, + "rollup": true, +} + +func getRollupArgIdx(funcName string) int { + funcName = strings.ToLower(funcName) + if rollupFuncs[funcName] == nil { + logger.Panicf("BUG: getRollupArgIdx is called for non-rollup func %q", funcName) + } + if funcName == "quantile_over_time" { + return 1 + } + return 0 +} + +func getRollupFunc(funcName string) newRollupFunc { + funcName = strings.ToLower(funcName) + return rollupFuncs[funcName] +} + +func isRollupFunc(funcName string) bool { + return getRollupFunc(funcName) != nil +} + +type rollupFuncArg struct { + prevValue float64 + prevTimestamp int64 + values []float64 + timestamps []int64 + + idx int + step int64 +} + +func (rfa *rollupFuncArg) reset() { + rfa.prevValue = 0 + rfa.prevTimestamp = 0 + rfa.values = nil + rfa.timestamps = nil + rfa.idx = 0 + rfa.step = 0 +} + +// rollupFunc must return rollup value for the given rfa. +// +// prevValue may be nan, values and timestamps may be empty. +type rollupFunc func(rfa *rollupFuncArg) float64 + +type rollupConfig struct { + // This tag value must be added to "rollup" tag if non-empty. + TagValue string + + Func rollupFunc + Start int64 + End int64 + Step int64 + Window int64 + + Timestamps []int64 +} + +var ( + nan = math.NaN() + inf = math.Inf(1) +) + +// The maximum interval without previous rows. +const maxSilenceInterval = 5 * 60 * 1000 + +// Do calculates rollups for the given timestamps and values, appends +// them to dstValues and returns results. +// +// rc.Timestamps are used as timestamps for dstValues. +// +// timestamps must cover time range [rc.Start - rc.Window - maxSilenceInterval ... rc.End + rc.Step]. +// +// Cannot be called from concurrent goroutines. +func (rc *rollupConfig) Do(dstValues []float64, values []float64, timestamps []int64) []float64 { + // Sanity checks. + if rc.Step <= 0 { + logger.Panicf("BUG: Step must be bigger than 0; got %d", rc.Step) + } + if rc.Start > rc.End { + logger.Panicf("BUG: Start cannot exceed End; got %d vs %d", rc.Start, rc.End) + } + if rc.Window < 0 { + logger.Panicf("BUG: Window must be non-negative; got %d", rc.Window) + } + if err := ValidateMaxPointsPerTimeseries(rc.Start, rc.End, rc.Step); err != nil { + logger.Panicf("BUG: %s; this must be validated before the call to rollupConfig.Do", err) + } + + // Extend dstValues in order to remove mallocs below. + dstValues = decimal.ExtendFloat64sCapacity(dstValues, len(rc.Timestamps)) + + maxPrevInterval := getMaxPrevInterval(timestamps) + window := rc.Window + if window <= 0 { + window = rc.Step + } + if window < maxPrevInterval { + window = maxPrevInterval + } + rfa := getRollupFuncArg() + rfa.idx = 0 + rfa.step = rc.Step + + i := 0 + j := 0 + for _, ts := range rc.Timestamps { + tEnd := ts + rc.Step + tStart := tEnd - window + n := sort.Search(len(timestamps)-i, func(n int) bool { + return timestamps[i+n] > tStart + }) + i += n + if j < i { + j = i + } + n = sort.Search(len(timestamps)-j, func(n int) bool { + return timestamps[j+n] > tEnd + }) + j += n + + rfa.prevValue = nan + rfa.prevTimestamp = tStart - maxPrevInterval + if i > 0 && timestamps[i-1] > rfa.prevTimestamp { + rfa.prevValue = values[i-1] + rfa.prevTimestamp = timestamps[i-1] + } + + rfa.values = values[i:j] + rfa.timestamps = timestamps[i:j] + value := rc.Func(rfa) + rfa.idx++ + dstValues = append(dstValues, value) + } + putRollupFuncArg(rfa) + + return dstValues +} + +func getMaxPrevInterval(timestamps []int64) int64 { + if len(timestamps) < 2 { + return int64(maxSilenceInterval) + } + d := (timestamps[len(timestamps)-1] - timestamps[0]) / int64(len(timestamps)-1) + if d <= 0 { + return 1 + } + // Slightly increase d in order to handle possible jitter in scrape interval. + return d + (d / 16) +} + +func removeCounterResets(values []float64) { + // There is no need in handling NaNs here, since they are impossible + // on values from vmstorage. + if len(values) == 0 { + return + } + var correction float64 + prevValue := values[0] + for i, v := range values { + d := v - prevValue + if d < 0 { + if (-d * 8) < prevValue { + // This is likely jitter from `Prometheus HA pairs`. + // Just substitute v with prevValue. + v = prevValue + } else { + correction += prevValue + } + } + prevValue = v + values[i] = v + correction + } +} + +func deltaValues(values []float64) { + // There is no need in handling NaNs here, since they are impossible + // on values from vmstorage. + if len(values) == 0 { + return + } + prevValue := values[0] + for i, v := range values[1:] { + values[i] = v - prevValue + prevValue = v + } + values[len(values)-1] = nan +} + +func derivValues(values []float64, timestamps []int64) { + // There is no need in handling NaNs here, since they are impossible + // on values from vmstorage. + if len(values) == 0 { + return + } + prevValue := values[0] + prevTs := timestamps[0] + for i, v := range values[1:] { + ts := timestamps[i+1] + dt := float64(ts-prevTs) * 1e-3 + values[i] = (v - prevValue) / dt + prevValue = v + prevTs = ts + } + values[len(values)-1] = nan +} + +type newRollupFunc func(args []interface{}) (rollupFunc, error) + +func newRollupFuncOneArg(rf rollupFunc) newRollupFunc { + return func(args []interface{}) (rollupFunc, error) { + if err := expectRollupArgsNum(args, 1); err != nil { + return nil, err + } + return rf, nil + } +} + +func newRollupHoltWinters(args []interface{}) (rollupFunc, error) { + if err := expectRollupArgsNum(args, 3); err != nil { + return nil, err + } + sfs, err := getScalar(args[1], 1) + if err != nil { + return nil, err + } + tfs, err := getScalar(args[2], 2) + if err != nil { + return nil, err + } + rf := func(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + sf := sfs[rfa.idx] + if sf <= 0 || sf >= 1 { + return nan + } + tf := tfs[rfa.idx] + if tf <= 0 || tf >= 1 { + return nan + } + + // See https://en.wikipedia.org/wiki/Exponential_smoothing#Double_exponential_smoothing . + // TODO: determine whether this shit really works. + s0 := rfa.prevValue + if math.IsNaN(s0) { + s0 = values[0] + values = values[1:] + if len(values) == 0 { + return s0 + } + } + b0 := values[0] - s0 + for _, v := range values { + s1 := sf*v + (1-sf)*(s0+b0) + b1 := tf*(s1-s0) + (1-tf)*b0 + s0 = s1 + b0 = b1 + } + return s0 + } + return rf, nil +} + +func newRollupPredictLinear(args []interface{}) (rollupFunc, error) { + if err := expectRollupArgsNum(args, 2); err != nil { + return nil, err + } + secs, err := getScalar(args[1], 1) + if err != nil { + return nil, err + } + rf := func(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + timestamps := rfa.timestamps + if len(values) == 0 { + return nan + } + + // See https://en.wikipedia.org/wiki/Simple_linear_regression#Numerical_example + // TODO: determine whether this shit really works. + tFirst := rfa.prevTimestamp + vSum := rfa.prevValue + if math.IsNaN(rfa.prevValue) { + tFirst = timestamps[0] + vSum = 0 + } + tSum := float64(0) + tvSum := float64(0) + ttSum := float64(0) + for i, v := range values { + dt := float64(timestamps[i]-tFirst) * 1e-3 + vSum += v + tSum += dt + tvSum += dt * v + ttSum += dt * dt + } + n := float64(len(values)) + k := (n*tvSum - tSum*vSum) / (n*ttSum - tSum*tSum) + v := (vSum - k*tSum) / n + sec := secs[rfa.idx] + return v + k*sec + } + return rf, nil +} + +func newRollupQuantile(args []interface{}) (rollupFunc, error) { + if err := expectRollupArgsNum(args, 2); err != nil { + return nil, err + } + phis, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + rf := func(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + hf := histogram.GetFast() + for _, v := range values { + hf.Update(v) + } + phi := phis[rfa.idx] + qv := hf.Quantile(phi) + histogram.PutFast(hf) + return qv + } + return rf, nil +} + +func rollupAvg(rfa *rollupFuncArg) float64 { + // Do not use `Rapid calculation methods` at https://en.wikipedia.org/wiki/Standard_deviation, + // since it is slower and has no significant benefits in precision. + + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + var sum float64 + for _, v := range values { + sum += v + } + return sum / float64(len(values)) +} + +func rollupMin(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + minValue := values[0] + for _, v := range values { + if v < minValue { + minValue = v + } + } + return minValue +} + +func rollupMax(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + maxValue := values[0] + for _, v := range values { + if v > maxValue { + maxValue = v + } + } + return maxValue +} + +func rollupSum(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + var sum float64 + for _, v := range values { + sum += v + } + return sum +} + +func rollupCount(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + return float64(len(values)) +} + +func rollupStddev(rfa *rollupFuncArg) float64 { + stdvar := rollupStdvar(rfa) + return math.Sqrt(stdvar) +} + +func rollupStdvar(rfa *rollupFuncArg) float64 { + // See `Rapid calculation methods` at https://en.wikipedia.org/wiki/Standard_deviation + + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + var avg float64 + var count float64 + var q float64 + for _, v := range values { + count++ + avgNew := avg + (v-avg)/count + q += (v - avg) * (v - avgNew) + avg = avgNew + } + return q / count +} + +func rollupDelta(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + prevValue := rfa.prevValue + if math.IsNaN(prevValue) { + if len(values) == 0 { + return nan + } + prevValue = values[0] + values = values[1:] + } + if len(values) == 0 { + return nan + } + return values[len(values)-1] - prevValue +} + +func rollupIdelta(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + lastValue := values[len(values)-1] + values = values[:len(values)-1] + if len(values) == 0 { + prevValue := rfa.prevValue + if math.IsNaN(prevValue) { + return nan + } + return lastValue - prevValue + } + return lastValue - values[len(values)-1] +} + +func rollupDeriv(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + timestamps := rfa.timestamps + prevValue := rfa.prevValue + prevTimestamp := rfa.prevTimestamp + if math.IsNaN(prevValue) { + if len(values) == 0 { + return nan + } + prevValue = values[0] + prevTimestamp = timestamps[0] + values = values[1:] + timestamps = timestamps[1:] + } + if len(values) == 0 { + return nan + } + vEnd := values[len(values)-1] + tEnd := timestamps[len(timestamps)-1] + dv := vEnd - prevValue + dt := float64(tEnd-prevTimestamp) * 1e-3 + return dv / dt +} + +func rollupIderiv(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + timestamps := rfa.timestamps + if len(values) == 0 { + return nan + } + vEnd := values[len(values)-1] + tEnd := timestamps[len(timestamps)-1] + values = values[:len(values)-1] + timestamps = timestamps[:len(timestamps)-1] + prevValue := rfa.prevValue + prevTimestamp := rfa.prevTimestamp + if len(values) == 0 { + if math.IsNaN(prevValue) { + return nan + } + } else { + prevValue = values[len(values)-1] + prevTimestamp = timestamps[len(timestamps)-1] + } + dv := vEnd - prevValue + dt := tEnd - prevTimestamp + return dv / (float64(dt) / 1000) +} + +func rollupChanges(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + n := 0 + prevValue := rfa.prevValue + if math.IsNaN(prevValue) { + prevValue = values[0] + } + for _, v := range values { + if v != prevValue { + n++ + prevValue = v + } + } + return float64(n) +} + +func rollupResets(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + prevValue := rfa.prevValue + if math.IsNaN(prevValue) { + prevValue = values[0] + values = values[1:] + } + if len(values) == 0 { + return nan + } + n := 0 + for _, v := range values { + if v < prevValue { + n++ + } + prevValue = v + } + return float64(n) +} + +func rollupFirst(rfa *rollupFuncArg) float64 { + // See https://prometheus.io/docs/prometheus/latest/querying/basics/#staleness + v := rfa.prevValue + if !math.IsNaN(v) { + return v + } + + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + return values[0] +} + +var rollupDefault = rollupFirst + +func rollupLast(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + return values[len(values)-1] +} + +func rollupDistinct(rfa *rollupFuncArg) float64 { + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + if len(values) == 0 { + return nan + } + m := make(map[float64]struct{}) + for _, v := range values { + m[v] = struct{}{} + } + return float64(len(m)) +} + +func rollupIntegrate(rfa *rollupFuncArg) float64 { + prevTimestamp := rfa.prevTimestamp + + // There is no need in handling NaNs here, since they must be cleanup up + // before calling rollup funcs. + values := rfa.values + timestamps := rfa.timestamps + if len(values) == 0 { + return nan + } + prevValue := rfa.prevValue + if math.IsNaN(prevValue) { + prevValue = values[0] + prevTimestamp = timestamps[0] + values = values[1:] + timestamps = timestamps[1:] + } + if len(values) == 0 { + return nan + } + + var sum float64 + for i, v := range values { + timestamp := timestamps[i] + dt := float64(timestamp-prevTimestamp) * 1e-3 + sum += 0.5 * (v + prevValue) * dt + } + return sum +} + +func rollupFake(rfa *rollupFuncArg) float64 { + logger.Panicf("BUG: rollupFake shouldn't be called") + return 0 +} + +func getScalar(arg interface{}, argNum int) ([]float64, error) { + ts, ok := arg.([]*timeseries) + if !ok { + return nil, fmt.Errorf(`unexpected type for arg #%d; got %T; want %T`, argNum+1, arg, ts) + } + if len(ts) != 1 { + return nil, fmt.Errorf(`arg #%d must contain a single timeseries; got %d timeseries`, argNum+1, len(ts)) + } + return ts[0].Values, nil +} + +func getString(tss []*timeseries, argNum int) (string, error) { + if len(tss) != 1 { + return "", fmt.Errorf(`arg #%d must contain a single timeseries; got %d timeseries`, argNum+1, len(tss)) + } + ts := tss[0] + for _, v := range ts.Values { + if !math.IsNaN(v) { + return "", fmt.Errorf(`arg #%d contains non-string timeseries`, argNum+1) + } + } + return string(ts.MetricName.MetricGroup), nil +} + +func expectRollupArgsNum(args []interface{}, expectedNum int) error { + if len(args) == expectedNum { + return nil + } + return fmt.Errorf(`unexpected number of args; got %d; want %d`, len(args), expectedNum) +} + +func getRollupFuncArg() *rollupFuncArg { + v := rfaPool.Get() + if v == nil { + return &rollupFuncArg{} + } + return v.(*rollupFuncArg) +} + +func putRollupFuncArg(rfa *rollupFuncArg) { + rfa.reset() + rfaPool.Put(rfa) +} + +var rfaPool sync.Pool diff --git a/app/vmselect/promql/rollup_result_cache.go b/app/vmselect/promql/rollup_result_cache.go new file mode 100644 index 000000000..c12c22916 --- /dev/null +++ b/app/vmselect/promql/rollup_result_cache.go @@ -0,0 +1,496 @@ +package promql + +import ( + "crypto/rand" + "fmt" + "runtime" + "sync" + "sync/atomic" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "github.com/VictoriaMetrics/fastcache" + "github.com/VictoriaMetrics/metrics" +) + +var rollupResultCacheV = &rollupResultCache{ + fastcache.New(1024 * 1024), // This is a cache for testing. +} +var rollupResultCachePath string + +func getRollupResultCacheSize() int { + rollupResultCacheSizeOnce.Do(func() { + n := memory.Allowed() / 16 + if n <= 0 { + n = 1024 * 1024 + } + rollupResultCacheSize = n + }) + return rollupResultCacheSize +} + +var ( + rollupResultCacheSize int + rollupResultCacheSizeOnce sync.Once +) + +// InitRollupResultCache initializes the rollupResult cache +func InitRollupResultCache(cachePath string) { + rollupResultCachePath = cachePath + startTime := time.Now() + var c *fastcache.Cache + if len(rollupResultCachePath) > 0 { + logger.Infof("loading rollupResult cache from %q...", rollupResultCachePath) + c = fastcache.LoadFromFileOrNew(rollupResultCachePath, getRollupResultCacheSize()) + } else { + c = fastcache.New(getRollupResultCacheSize()) + } + stats := &fastcache.Stats{} + var statsLock sync.Mutex + var statsLastUpdate time.Time + fcs := func() *fastcache.Stats { + statsLock.Lock() + defer statsLock.Unlock() + + if time.Since(statsLastUpdate) < time.Second { + return stats + } + var fcs fastcache.Stats + c.UpdateStats(&fcs) + stats = &fcs + statsLastUpdate = time.Now() + return stats + } + if len(rollupResultCachePath) > 0 { + logger.Infof("loaded rollupResult cache from %q in %s; entriesCount: %d, bytesSize: %d", + rollupResultCachePath, time.Since(startTime), fcs().EntriesCount, fcs().BytesSize) + } + + metrics.NewGauge(`vm_cache_entries{type="promql/rollupResult"}`, func() float64 { + return float64(fcs().EntriesCount) + }) + metrics.NewGauge(`vm_cache_size_bytes{type="promql/rollupResult"}`, func() float64 { + return float64(fcs().BytesSize) + }) + metrics.NewGauge(`vm_cache_requests_total{type="promql/rollupResult"}`, func() float64 { + return float64(fcs().GetCalls) + }) + metrics.NewGauge(`vm_cache_misses_total{type="promql/rollupResult"}`, func() float64 { + return float64(fcs().Misses) + }) + + rollupResultCacheV = &rollupResultCache{ + c: c, + } +} + +// StopRollupResultCache closes the rollupResult cache. +func StopRollupResultCache() { + if len(rollupResultCachePath) == 0 { + rollupResultCacheV.c.Reset() + return + } + gomaxprocs := runtime.GOMAXPROCS(-1) + logger.Infof("saving rollupResult cache to %q...", rollupResultCachePath) + startTime := time.Now() + if err := rollupResultCacheV.c.SaveToFileConcurrent(rollupResultCachePath, gomaxprocs); err != nil { + logger.Errorf("cannot close rollupResult cache at %q: %s", rollupResultCachePath, err) + } else { + var fcs fastcache.Stats + rollupResultCacheV.c.UpdateStats(&fcs) + rollupResultCacheV.c.Reset() + logger.Infof("saved rollupResult cache to %q in %s; entriesCount: %d, bytesSize: %d", + rollupResultCachePath, time.Since(startTime), fcs.EntriesCount, fcs.BytesSize) + } +} + +type rollupResultCache struct { + c *fastcache.Cache +} + +var rollupResultCacheResets = metrics.NewCounter(`vm_cache_resets_total{type="promql/rollupResult"}`) + +// ResetRollupResultCache resets rollup result cache. +func ResetRollupResultCache() { + rollupResultCacheResets.Inc() + rollupResultCacheV.c.Reset() +} + +func (rrc *rollupResultCache) Get(funcName string, ec *EvalConfig, me *metricExpr, window int64) (tss []*timeseries, newStart int64) { + if !ec.mayCache() { + return nil, ec.Start + } + + // Obtain tss from the cache. + bb := bbPool.Get() + defer bbPool.Put(bb) + + bb.B = marshalRollupResultCacheKey(bb.B[:0], funcName, me, window, ec.Step) + metainfoBuf := rrc.c.Get(nil, bb.B) + if len(metainfoBuf) == 0 { + return nil, ec.Start + } + var mi rollupResultCacheMetainfo + if err := mi.Unmarshal(metainfoBuf); err != nil { + logger.Panicf("BUG: cannot unmarshal rollupResultCacheMetainfo: %s; it looks like it was improperly saved", err) + } + key := mi.GetBestKey(ec.Start, ec.End) + if key.prefix == 0 && key.suffix == 0 { + return nil, ec.Start + } + bb.B = key.Marshal(bb.B[:0]) + resultBuf := rrc.c.GetBig(nil, bb.B) + if len(resultBuf) == 0 { + mi.RemoveKey(key) + metainfoBuf = mi.Marshal(metainfoBuf[:0]) + bb.B = marshalRollupResultCacheKey(bb.B[:0], funcName, me, window, ec.Step) + rrc.c.Set(bb.B, metainfoBuf) + return nil, ec.Start + } + tss, err := unmarshalTimeseriesFast(resultBuf) + if err != nil { + logger.Panicf("BUG: cannot unmarshal timeseries from rollupResultCache: %s; it looks like it was improperly saved", err) + } + + // Extract values for the matching timestamps + timestamps := tss[0].Timestamps + i := 0 + for i < len(timestamps) && timestamps[i] < ec.Start { + i++ + } + if i == len(timestamps) { + // no matches. + return nil, ec.Start + } + if timestamps[i] != ec.Start { + // The cached range doesn't cover the requested range. + return nil, ec.Start + } + + j := len(timestamps) - 1 + for j >= 0 && timestamps[j] > ec.End { + j-- + } + j++ + if j <= i { + // no matches. + return nil, ec.Start + } + + for _, ts := range tss { + ts.Timestamps = ts.Timestamps[i:j] + ts.Values = ts.Values[i:j] + } + + timestamps = tss[0].Timestamps + newStart = timestamps[len(timestamps)-1] + ec.Step + return tss, newStart +} + +func (rrc *rollupResultCache) Put(funcName string, ec *EvalConfig, me *metricExpr, window int64, tss []*timeseries) { + if len(tss) == 0 || !ec.mayCache() { + return + } + + // Remove values up to currentTime - step - maxSilenceInterval, + // since these values may be added later. + timestamps := tss[0].Timestamps + deadline := (time.Now().UnixNano() / 1e6) - ec.Step - maxSilenceInterval + i := len(timestamps) - 1 + for i >= 0 && timestamps[i] > deadline { + i-- + } + i++ + if i == 0 { + // Nothing to store in the cache. + return + } + if i < len(timestamps) { + timestamps = timestamps[:i] + // Make a copy of tss and remove unfit values + rvs := copyTimeseriesShallow(tss) + for _, ts := range rvs { + ts.Timestamps = ts.Timestamps[:i] + ts.Values = ts.Values[:i] + } + tss = rvs + } + + // Store tss in the cache. + maxMarshaledSize := getRollupResultCacheSize() / 4 + tssMarshaled := marshalTimeseriesFast(tss, maxMarshaledSize, ec.Step) + if tssMarshaled == nil { + tooBigRollupResults.Inc() + return + } + + bb := bbPool.Get() + defer bbPool.Put(bb) + + var key rollupResultCacheKey + key.prefix = rollupResultCacheKeyPrefix + key.suffix = atomic.AddUint64(&rollupResultCacheKeySuffix, 1) + bb.B = key.Marshal(bb.B[:0]) + rrc.c.SetBig(bb.B, tssMarshaled) + + bb.B = marshalRollupResultCacheKey(bb.B[:0], funcName, me, window, ec.Step) + metainfoBuf := rrc.c.Get(nil, bb.B) + var mi rollupResultCacheMetainfo + if len(metainfoBuf) > 0 { + if err := mi.Unmarshal(metainfoBuf); err != nil { + logger.Panicf("BUG: cannot unmarshal rollupResultCacheMetainfo: %s; it looks like it was improperly saved", err) + } + } + mi.AddKey(key, timestamps[0], timestamps[len(timestamps)-1]) + metainfoBuf = mi.Marshal(metainfoBuf[:0]) + rrc.c.Set(bb.B, metainfoBuf) +} + +var ( + rollupResultCacheKeyPrefix = func() uint64 { + var buf [8]byte + if _, err := rand.Read(buf[:]); err != nil { + // do not use logger.Panicf, since it isn't initialized yet. + panic(fmt.Errorf("FATAL: cannot read random data for rollupResultCacheKeyPrefix: %s", err)) + } + return encoding.UnmarshalUint64(buf[:]) + }() + rollupResultCacheKeySuffix = uint64(time.Now().UnixNano()) +) + +var tooBigRollupResults = metrics.NewCounter("vm_too_big_rollup_results_total") + +// Increment this value every time the format of the cache changes. +const rollupResultCacheVersion = 4 + +func marshalRollupResultCacheKey(dst []byte, funcName string, me *metricExpr, window, step int64) []byte { + dst = append(dst, rollupResultCacheVersion) + dst = encoding.MarshalUint64(dst, uint64(len(funcName))) + dst = append(dst, funcName...) + dst = encoding.MarshalInt64(dst, window) + dst = encoding.MarshalInt64(dst, step) + for i := range me.TagFilters { + dst = me.TagFilters[i].Marshal(dst) + } + return dst +} + +// mergeTimeseries concatenates b with a and returns the result. +// +// Preconditions: +// - a mustn't intersect with b. +// - a timestamps must be smaller than b timestamps. +// +// Postconditions: +// - a and b cannot be used after returning from the call. +func mergeTimeseries(a, b []*timeseries, bStart int64, ec *EvalConfig) []*timeseries { + sharedTimestamps := ec.getSharedTimestamps() + if bStart == ec.Start { + // Nothing to merge - b covers all the time range. + // Verify b is correct. + for _, tsB := range b { + tsB.denyReuse = true + tsB.Timestamps = sharedTimestamps + if len(tsB.Values) != len(tsB.Timestamps) { + logger.Panicf("BUG: unexpected number of values in b; got %d; want %d", len(tsB.Values), len(tsB.Timestamps)) + } + } + return b + } + + m := make(map[string]*timeseries, len(a)) + bb := bbPool.Get() + defer bbPool.Put(bb) + for _, ts := range a { + bb.B = marshalMetricNameSorted(bb.B[:0], &ts.MetricName) + m[string(bb.B)] = ts + } + + rvs := make([]*timeseries, 0, len(a)) + for _, tsB := range b { + var tmp timeseries + tmp.denyReuse = true + tmp.Timestamps = sharedTimestamps + tmp.Values = make([]float64, 0, len(tmp.Timestamps)) + // Do not use MetricName.CopyFrom for performance reasons. + // It is safe to make shallow copy, since tsB must no longer used. + tmp.MetricName = tsB.MetricName + + bb.B = marshalMetricNameSorted(bb.B[:0], &tsB.MetricName) + tsA := m[string(bb.B)] + if tsA == nil { + tStart := ec.Start + for tStart < bStart { + tmp.Values = append(tmp.Values, nan) + tStart += ec.Step + } + } else { + tmp.Values = append(tmp.Values, tsA.Values...) + delete(m, string(bb.B)) + } + tmp.Values = append(tmp.Values, tsB.Values...) + if len(tmp.Values) != len(tmp.Timestamps) { + logger.Panicf("BUG: unexpected values after merging new values; got %d; want %d", len(tmp.Values), len(tmp.Timestamps)) + } + rvs = append(rvs, &tmp) + } + + // Copy the remaining timeseries from m. + for _, tsA := range m { + var tmp timeseries + tmp.denyReuse = true + tmp.Timestamps = sharedTimestamps + // Do not use MetricName.CopyFrom for performance reasons. + // It is safe to make shallow copy, since tsA must no longer used. + tmp.MetricName = tsA.MetricName + tmp.Values = append(tmp.Values, tsA.Values...) + + tStart := bStart + for tStart <= ec.End { + tmp.Values = append(tmp.Values, nan) + tStart += ec.Step + } + if len(tmp.Values) != len(tmp.Timestamps) { + logger.Panicf("BUG: unexpected values in the result after adding cached values; got %d; want %d", len(tmp.Values), len(tmp.Timestamps)) + } + rvs = append(rvs, &tmp) + } + return rvs +} + +type rollupResultCacheMetainfo struct { + entries []rollupResultCacheMetainfoEntry +} + +func (mi *rollupResultCacheMetainfo) Marshal(dst []byte) []byte { + dst = encoding.MarshalUint32(dst, uint32(len(mi.entries))) + for i := range mi.entries { + dst = mi.entries[i].Marshal(dst) + } + return dst +} + +func (mi *rollupResultCacheMetainfo) Unmarshal(src []byte) error { + if len(src) < 4 { + return fmt.Errorf("cannot unmarshal len(etries) from %d bytes; need at least %d bytes", len(src), 4) + } + entriesLen := int(encoding.UnmarshalUint32(src)) + src = src[4:] + if n := entriesLen - cap(mi.entries); n > 0 { + mi.entries = append(mi.entries[:cap(mi.entries)], make([]rollupResultCacheMetainfoEntry, n)...) + } + mi.entries = mi.entries[:entriesLen] + for i := 0; i < entriesLen; i++ { + tail, err := mi.entries[i].Unmarshal(src) + if err != nil { + return fmt.Errorf("cannot unmarshal entry #%d: %s", i, err) + } + src = tail + } + if len(src) > 0 { + return fmt.Errorf("unexpected non-empty tail left; len(tail)=%d", len(src)) + } + return nil +} + +func (mi *rollupResultCacheMetainfo) GetBestKey(start, end int64) rollupResultCacheKey { + if start > end { + logger.Panicf("BUG: start cannot exceed end; got %d vs %d", start, end) + } + var bestKey rollupResultCacheKey + bestD := int64(1<<63 - 1) + for i := range mi.entries { + e := &mi.entries[i] + if start < e.start || end <= e.start { + continue + } + d := start - e.start + if d < bestD { + bestD = d + bestKey = e.key + } + } + return bestKey +} + +func (mi *rollupResultCacheMetainfo) AddKey(key rollupResultCacheKey, start, end int64) { + if start > end { + logger.Panicf("BUG: start cannot exceed end; got %d vs %d", start, end) + } + mi.entries = append(mi.entries, rollupResultCacheMetainfoEntry{ + start: start, + end: end, + key: key, + }) + if len(mi.entries) > 30 { + // Remove old entries. + mi.entries = append(mi.entries[:0], mi.entries[10:]...) + } +} + +func (mi *rollupResultCacheMetainfo) RemoveKey(key rollupResultCacheKey) { + for i := range mi.entries { + if mi.entries[i].key == key { + mi.entries = append(mi.entries[:i], mi.entries[i+1:]...) + return + } + } +} + +type rollupResultCacheMetainfoEntry struct { + start int64 + end int64 + key rollupResultCacheKey +} + +func (mie *rollupResultCacheMetainfoEntry) Marshal(dst []byte) []byte { + dst = encoding.MarshalInt64(dst, mie.start) + dst = encoding.MarshalInt64(dst, mie.end) + dst = encoding.MarshalUint64(dst, mie.key.prefix) + dst = encoding.MarshalUint64(dst, mie.key.suffix) + return dst +} + +func (mie *rollupResultCacheMetainfoEntry) Unmarshal(src []byte) ([]byte, error) { + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal start from %d bytes; need at least %d bytes", len(src), 8) + } + mie.start = encoding.UnmarshalInt64(src) + src = src[8:] + + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal end from %d bytes; need at least %d bytes", len(src), 8) + } + mie.end = encoding.UnmarshalInt64(src) + src = src[8:] + + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal key prefix from %d bytes; need at least %d bytes", len(src), 8) + } + mie.key.prefix = encoding.UnmarshalUint64(src) + src = src[8:] + + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal key suffix from %d bytes; need at least %d bytes", len(src), 8) + } + mie.key.suffix = encoding.UnmarshalUint64(src) + src = src[8:] + + return src, nil +} + +// rollupResultCacheKey must be globally unique across vmselect nodes, +// so it has prefix and suffix. +type rollupResultCacheKey struct { + prefix uint64 + suffix uint64 +} + +func (k *rollupResultCacheKey) Marshal(dst []byte) []byte { + dst = append(dst, rollupResultCacheVersion) + dst = encoding.MarshalUint64(dst, k.prefix) + dst = encoding.MarshalUint64(dst, k.suffix) + return dst +} diff --git a/app/vmselect/promql/rollup_result_cache_test.go b/app/vmselect/promql/rollup_result_cache_test.go new file mode 100644 index 000000000..e2cdfac2e --- /dev/null +++ b/app/vmselect/promql/rollup_result_cache_test.go @@ -0,0 +1,368 @@ +package promql + +import ( + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +func TestRollupResultCache(t *testing.T) { + ResetRollupResultCache() + funcName := "foo" + window := int64(456) + ec := &EvalConfig{ + Start: 1000, + End: 2000, + Step: 200, + + MayCache: true, + } + me := &metricExpr{ + TagFilters: []storage.TagFilter{{ + Key: []byte("aaa"), + Value: []byte("xxx"), + }}, + } + + // Try obtaining an empty value. + t.Run("empty", func(t *testing.T) { + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != ec.Start { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, ec.Start) + } + if len(tss) != 0 { + t.Fatalf("got %d timeseries, while expecting zero", len(tss)) + } + }) + + // Store timeseries overlapping with start + t.Run("start-overlap", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{800, 1000, 1200}, + Values: []float64{0, 1, 2}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 1400 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 1400) + } + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200}, + Values: []float64{1, 2}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + + // Store timeseries overlapping with end + t.Run("end-overlap", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{1800, 2000, 2200, 2400}, + Values: []float64{333, 0, 1, 2}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 1000 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 1000) + } + if len(tss) != 0 { + t.Fatalf("got %d timeseries, while expecting zero", len(tss)) + } + }) + + // Store timeseries covered by [start ... end] + t.Run("full-cover", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{1200, 1400, 1600}, + Values: []float64{0, 1, 2}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 1000 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 1000) + } + if len(tss) != 0 { + t.Fatalf("got %d timeseries, while expecting zero", len(tss)) + } + }) + + // Store timeseries below start + t.Run("before-start", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{200, 400, 600}, + Values: []float64{0, 1, 2}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 1000 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 1000) + } + if len(tss) != 0 { + t.Fatalf("got %d timeseries, while expecting zero", len(tss)) + } + }) + + // Store timeseries after end + t.Run("after-end", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{2200, 2400, 2600}, + Values: []float64{0, 1, 2}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 1000 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 1000) + } + if len(tss) != 0 { + t.Fatalf("got %d timeseries, while expecting zero", len(tss)) + } + }) + + // Store timeseries bigger than the interval [start ... end] + t.Run("bigger-than-start-end", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{800, 1000, 1200, 1400, 1600, 1800, 2000, 2200}, + Values: []float64{0, 1, 2, 3, 4, 5, 6, 7}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 2200 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 2200) + } + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{1, 2, 3, 4, 5, 6}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + + // Store timeseries matching the interval [start ... end] + t.Run("start-end-match", func(t *testing.T) { + ResetRollupResultCache() + tss := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{1, 2, 3, 4, 5, 6}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 2200 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 2200) + } + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{1, 2, 3, 4, 5, 6}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + + // Store big timeseries, so their marshaled size exceeds 64Kb. + t.Run("big-timeseries", func(t *testing.T) { + ResetRollupResultCache() + var tss []*timeseries + for i := 0; i < 1000; i++ { + ts := ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{1, 2, 3, 4, 5, 6}, + } + tss = append(tss, ts) + } + rollupResultCacheV.Put(funcName, ec, me, window, tss) + tssResult, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 2200 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 2200) + } + testTimeseriesEqual(t, tssResult, tss) + }) + + // Store multiple time series + t.Run("multi-timeseries", func(t *testing.T) { + ResetRollupResultCache() + tss1 := []*timeseries{ + ×eries{ + Timestamps: []int64{800, 1000, 1200}, + Values: []float64{0, 1, 2}, + }, + } + tss2 := []*timeseries{ + ×eries{ + Timestamps: []int64{1800, 2000, 2200, 2400}, + Values: []float64{333, 0, 1, 2}, + }, + } + tss3 := []*timeseries{ + ×eries{ + Timestamps: []int64{1200, 1400, 1600}, + Values: []float64{0, 1, 2}, + }, + } + rollupResultCacheV.Put(funcName, ec, me, window, tss1) + rollupResultCacheV.Put(funcName, ec, me, window, tss2) + rollupResultCacheV.Put(funcName, ec, me, window, tss3) + tss, newStart := rollupResultCacheV.Get(funcName, ec, me, window) + if newStart != 1400 { + t.Fatalf("unexpected newStart; got %d; want %d", newStart, 1400) + } + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200}, + Values: []float64{1, 2}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + +} + +func TestMergeTimeseries(t *testing.T) { + ec := &EvalConfig{ + Start: 1000, + End: 2000, + Step: 200, + } + bStart := int64(1400) + + t.Run("bStart=ec.Start", func(t *testing.T) { + a := []*timeseries{} + b := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{1, 2, 3, 4, 5, 6}, + }, + } + tss := mergeTimeseries(a, b, 1000, ec) + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{1, 2, 3, 4, 5, 6}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + t.Run("a-empty", func(t *testing.T) { + a := []*timeseries{} + b := []*timeseries{ + ×eries{ + Timestamps: []int64{1400, 1600, 1800, 2000}, + Values: []float64{3, 4, 5, 6}, + }, + } + tss := mergeTimeseries(a, b, bStart, ec) + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{nan, nan, 3, 4, 5, 6}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + t.Run("b-empty", func(t *testing.T) { + a := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200}, + Values: []float64{2, 1}, + }, + } + b := []*timeseries{} + tss := mergeTimeseries(a, b, bStart, ec) + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{2, 1, nan, nan, nan, nan}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + t.Run("non-empty", func(t *testing.T) { + a := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200}, + Values: []float64{2, 1}, + }, + } + b := []*timeseries{ + ×eries{ + Timestamps: []int64{1400, 1600, 1800, 2000}, + Values: []float64{3, 4, 5, 6}, + }, + } + tss := mergeTimeseries(a, b, bStart, ec) + tssExpected := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{2, 1, 3, 4, 5, 6}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) + t.Run("non-empty-distinct-metric-names", func(t *testing.T) { + a := []*timeseries{ + ×eries{ + Timestamps: []int64{1000, 1200}, + Values: []float64{2, 1}, + }, + } + a[0].MetricName.MetricGroup = []byte("bar") + b := []*timeseries{ + ×eries{ + Timestamps: []int64{1400, 1600, 1800, 2000}, + Values: []float64{3, 4, 5, 6}, + }, + } + b[0].MetricName.MetricGroup = []byte("foo") + tss := mergeTimeseries(a, b, bStart, ec) + tssExpected := []*timeseries{ + ×eries{ + MetricName: storage.MetricName{ + MetricGroup: []byte("foo"), + }, + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{nan, nan, 3, 4, 5, 6}, + }, + ×eries{ + MetricName: storage.MetricName{ + MetricGroup: []byte("bar"), + }, + Timestamps: []int64{1000, 1200, 1400, 1600, 1800, 2000}, + Values: []float64{2, 1, nan, nan, nan, nan}, + }, + } + testTimeseriesEqual(t, tss, tssExpected) + }) +} + +func testTimeseriesEqual(t *testing.T, tss, tssExpected []*timeseries) { + t.Helper() + if len(tss) != len(tssExpected) { + t.Fatalf(`unexpected timeseries count; got %d; want %d`, len(tss), len(tssExpected)) + } + for i, ts := range tss { + tsExpected := tssExpected[i] + testMetricNamesEqual(t, &ts.MetricName, &tsExpected.MetricName) + testRowsEqual(t, ts.Values, ts.Timestamps, tsExpected.Values, tsExpected.Timestamps) + } +} diff --git a/app/vmselect/promql/rollup_test.go b/app/vmselect/promql/rollup_test.go new file mode 100644 index 000000000..9b6df7927 --- /dev/null +++ b/app/vmselect/promql/rollup_test.go @@ -0,0 +1,649 @@ +package promql + +import ( + "math" + "testing" +) + +var ( + testValues = []float64{123, 34, 44, 21, 54, 34, 99, 12, 44, 32, 34, 34} + testTimestamps = []int64{5, 15, 24, 36, 49, 60, 78, 80, 97, 115, 120, 130} +) + +func TestRemoveCounterResets(t *testing.T) { + removeCounterResets(nil) + + values := append([]float64{}, testValues...) + removeCounterResets(values) + valuesExpected := []float64{123, 157, 167, 188, 221, 255, 320, 332, 364, 396, 398, 398} + testRowsEqual(t, values, testTimestamps, valuesExpected, testTimestamps) + + // removeCounterResets doesn't expect negative values, so it doesn't work properly with them. + values = []float64{-100, -200, -300, -400} + removeCounterResets(values) + valuesExpected = []float64{-100, -300, -600, -1000} + timestampsExpected := []int64{0, 1, 2, 3} + testRowsEqual(t, values, timestampsExpected, valuesExpected, timestampsExpected) + + // verify how jitter from `Prometheus HA pairs` is handled + values = []float64{100, 95, 120, 140, 137, 50} + removeCounterResets(values) + valuesExpected = []float64{100, 100, 120, 140, 140, 190} + timestampsExpected = []int64{0, 1, 2, 3, 4, 5} + testRowsEqual(t, values, timestampsExpected, valuesExpected, timestampsExpected) +} + +func TestDeltaValues(t *testing.T) { + deltaValues(nil) + + values := []float64{123} + deltaValues(values) + valuesExpected := []float64{nan} + testRowsEqual(t, values, testTimestamps[:1], valuesExpected, testTimestamps[:1]) + + values = append([]float64{}, testValues...) + deltaValues(values) + valuesExpected = []float64{-89, 10, -23, 33, -20, 65, -87, 32, -12, 2, 0, nan} + testRowsEqual(t, values, testTimestamps, valuesExpected, testTimestamps) + + // remove counter resets + values = append([]float64{}, testValues...) + removeCounterResets(values) + deltaValues(values) + valuesExpected = []float64{34, 10, 21, 33, 34, 65, 12, 32, 32, 2, 0, nan} + testRowsEqual(t, values, testTimestamps, valuesExpected, testTimestamps) +} + +func TestDerivValues(t *testing.T) { + derivValues(nil, nil) + + values := []float64{123} + derivValues(values, testTimestamps[:1]) + valuesExpected := []float64{nan} + testRowsEqual(t, values, testTimestamps[:1], valuesExpected, testTimestamps[:1]) + + values = append([]float64{}, testValues...) + derivValues(values, testTimestamps) + valuesExpected = []float64{-8900, 1111.111111111111, -1916.6666666666665, 2538.461538461538, -1818.1818181818182, 3611.111111111111, + -43500, 1882.3529411764705, -666.6666666666666, 400, 0, nan} + testRowsEqual(t, values, testTimestamps, valuesExpected, testTimestamps) + + // remove counter resets + values = append([]float64{}, testValues...) + removeCounterResets(values) + derivValues(values, testTimestamps) + valuesExpected = []float64{3400, 1111.111111111111, 1750, 2538.461538461538, 3090.909090909091, 3611.111111111111, + 6000, 1882.3529411764705, 1777.7777777777776, 400, 0, nan} + testRowsEqual(t, values, testTimestamps, valuesExpected, testTimestamps) +} + +func testRollupFunc(t *testing.T, funcName string, args []interface{}, meExpected *metricExpr, vExpected float64) { + t.Helper() + nrf := getRollupFunc(funcName) + if nrf == nil { + t.Fatalf("cannot obtain %q", funcName) + } + rf, err := nrf(args) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + var rfa rollupFuncArg + rfa.prevValue = nan + rfa.prevTimestamp = 0 + rfa.values = append(rfa.values, testValues...) + rfa.timestamps = append(rfa.timestamps, testTimestamps...) + if rollupFuncsRemoveCounterResets[funcName] { + removeCounterResets(rfa.values) + } + for i := 0; i < 5; i++ { + v := rf(&rfa) + if math.IsNaN(vExpected) { + if !math.IsNaN(v) { + t.Fatalf("unexpected value; got %v; want %v", v, vExpected) + } + } else { + if v != vExpected { + t.Fatalf("unexpected value; got %v; want %v", v, vExpected) + } + } + } +} + +func TestRollupQuantileOverTime(t *testing.T) { + f := func(phi, vExpected float64) { + t.Helper() + phis := []*timeseries{{ + Values: []float64{phi}, + Timestamps: []int64{123}, + }} + var me metricExpr + args := []interface{}{phis, &rollupExpr{Expr: &me}} + testRollupFunc(t, "quantile_over_time", args, &me, vExpected) + } + + f(-123, 12) + f(-0.5, 12) + f(0, 12) + f(0.1, 21) + f(0.5, 34) + f(0.9, 99) + f(1, 123) + f(234, 123) +} + +func TestRollupPredictLinear(t *testing.T) { + f := func(sec, vExpected float64) { + t.Helper() + secs := []*timeseries{{ + Values: []float64{sec}, + Timestamps: []int64{123}, + }} + var me metricExpr + args := []interface{}{&rollupExpr{Expr: &me}, secs} + testRollupFunc(t, "predict_linear", args, &me, vExpected) + } + + f(0e-3, 63.739757761102624) + f(50e-3, 50.39682764539959) + f(100e-3, 37.053897529696556) + f(200e-3, 10.368037298290488) +} + +func TestRollupHoltWinters(t *testing.T) { + f := func(sf, tf, vExpected float64) { + t.Helper() + sfs := []*timeseries{{ + Values: []float64{sf}, + Timestamps: []int64{123}, + }} + tfs := []*timeseries{{ + Values: []float64{tf}, + Timestamps: []int64{123}, + }} + var me metricExpr + args := []interface{}{&rollupExpr{Expr: &me}, sfs, tfs} + testRollupFunc(t, "holt_winters", args, &me, vExpected) + } + + f(-1, 0.5, nan) + f(0, 0.5, nan) + f(1, 0.5, nan) + f(2, 0.5, nan) + f(0.5, -1, nan) + f(0.5, 0, nan) + f(0.5, 1, nan) + f(0.5, 2, nan) + f(0.5, 0.5, 34.97794532775879) + f(0.1, 0.5, -131.30529492371622) + f(0.1, 0.1, -397.3307790780296) + f(0.5, 0.1, -5.791530520284198) + f(0.5, 0.9, 25.498906408926757) + f(0.9, 0.9, 33.99637566941818) +} + +func TestRollupNewRollupFuncSuccess(t *testing.T) { + f := func(funcName string, vExpected float64) { + t.Helper() + var me metricExpr + args := []interface{}{&rollupExpr{Expr: &me}} + testRollupFunc(t, funcName, args, &me, vExpected) + } + + f("default_rollup", 123) + f("changes", 10) + f("delta", -89) + f("deriv", -712) + f("idelta", 0) + f("increase", 275) + f("irate", 0) + f("rate", 2200) + f("resets", 5) + f("avg_over_time", 47.083333333333336) + f("min_over_time", 12) + f("max_over_time", 123) + f("sum_over_time", 565) + f("count_over_time", 12) + f("stddev_over_time", 30.752935722554287) + f("stdvar_over_time", 945.7430555555555) + f("first_over_time", 123) + f("last_over_time", 34) + f("integrate", 61.0275) +} + +func TestRollupNewRollupFuncError(t *testing.T) { + if nrf := getRollupFunc("non-existing-func"); nrf != nil { + t.Fatalf("expecting nil func; got %p", nrf) + } + + f := func(funcName string, args []interface{}) { + t.Helper() + + nrf := getRollupFunc(funcName) + rf, err := nrf(args) + if err == nil { + t.Fatalf("expecting non-nil error") + } + if rf != nil { + t.Fatalf("expecting nil rf; got %p", rf) + } + } + + // Invalid number of args + f("default_rollup", nil) + f("holt_winters", nil) + f("predict_linear", nil) + f("quantile_over_time", nil) + + // Invalid arg type + scalarTs := []*timeseries{{ + Values: []float64{321}, + Timestamps: []int64{123}, + }} + me := &metricExpr{} + f("holt_winters", []interface{}{123, 123, 321}) + f("holt_winters", []interface{}{me, 123, 321}) + f("holt_winters", []interface{}{me, scalarTs, 321}) + f("predict_linear", []interface{}{123, 123}) + f("predict_linear", []interface{}{me, 123}) + f("quantile_over_time", []interface{}{123, 123}) +} + +func TestRollupNoWindowNoPoints(t *testing.T) { + t.Run("beforeStart", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: 0, + End: 4, + Step: 1, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{nan, nan, nan, nan, 123} + timestampsExpected := []int64{0, 1, 2, 3, 4} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("afterEnd", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupDelta, + Start: 120, + End: 144, + Step: 4, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{2, 2, 0, 0, 0, nan, nan} + timestampsExpected := []int64{120, 124, 128, 132, 136, 140, 144} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) +} + +func TestRollupWindowNoPoints(t *testing.T) { + t.Run("beforeStart", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: 0, + End: 4, + Step: 1, + Window: 3, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{nan, nan, nan, nan, 123} + timestampsExpected := []int64{0, 1, 2, 3, 4} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("afterEnd", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: 141, + End: 171, + Step: 10, + Window: 3, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{34, nan, nan, nan} + timestampsExpected := []int64{141, 151, 161, 171} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) +} + +func TestRollupNoWindowPartialPoints(t *testing.T) { + t.Run("beforeStart", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: 0, + End: 20, + Step: 5, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{123, 123, 123, 123, 123} + timestampsExpected := []int64{0, 5, 10, 15, 20} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("afterEnd", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: 100, + End: 160, + Step: 20, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{44, 34, 34, nan} + timestampsExpected := []int64{100, 120, 140, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("middle", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: -50, + End: 150, + Step: 50, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{nan, 123, 54, 44, nan} + timestampsExpected := []int64{-50, 0, 50, 100, 150} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) +} + +func TestRollupWindowPartialPoints(t *testing.T) { + t.Run("beforeStart", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupLast, + Start: 0, + End: 20, + Step: 5, + Window: 8, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{123, 123, 34, 34, 44} + timestampsExpected := []int64{0, 5, 10, 15, 20} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("afterEnd", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupLast, + Start: 100, + End: 160, + Step: 20, + Window: 18, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{34, 34, nan, nan} + timestampsExpected := []int64{100, 120, 140, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("middle", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupLast, + Start: 0, + End: 150, + Step: 50, + Window: 19, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{54, 44, nan, nan} + timestampsExpected := []int64{0, 50, 100, 150} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) +} + +func TestRollupFuncsNoWindow(t *testing.T) { + t.Run("first", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupFirst, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{123, 21, 12, 34, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("count", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupCount, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{4, 4, 3, 1, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("min", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupMin, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{21, 12, 32, 34, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("max", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupMax, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{123, 99, 44, 34, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("sum", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupSum, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{222, 199, 110, 34, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("delta", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupDelta, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{-102, -9, 22, 0, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("idelta", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupIdelta, + Start: 10, + End: 130, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{33, -87, 0, nan} + timestampsExpected := []int64{10, 50, 90, 130} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("changes", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupChanges, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{3, 4, 3, 0, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("resets", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupResets, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{2, 2, 1, 0, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("avg", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupAvg, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{55.5, 49.75, 36.666666666666664, 34, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("deriv", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupDeriv, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{-3290.3225806451615, -204.54545454545456, 550, 0, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("ideriv", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupIderiv, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{-1916.6666666666665, -43500, 400, 0, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("stddev", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupStddev, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{39.81519810323691, 32.080952292598795, 5.2493385826745405, 0, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("integrate", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupIntegrate, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{4.6035, 4.3934999999999995, 2.166, 0.34, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) + t.Run("distinct", func(t *testing.T) { + rc := rollupConfig{ + Func: rollupDistinct, + Start: 0, + End: 160, + Step: 40, + Window: 0, + } + rc.Timestamps = getTimestamps(rc.Start, rc.End, rc.Step) + values := rc.Do(nil, testValues, testTimestamps) + valuesExpected := []float64{4, 4, 3, 1, nan} + timestampsExpected := []int64{0, 40, 80, 120, 160} + testRowsEqual(t, values, rc.Timestamps, valuesExpected, timestampsExpected) + }) +} + +func testRowsEqual(t *testing.T, values []float64, timestamps []int64, valuesExpected []float64, timestampsExpected []int64) { + t.Helper() + if len(values) != len(valuesExpected) { + t.Fatalf("unexpected len(values); got %d; want %d\nvalues=\n%v\nvaluesExpected=\n%v", + len(values), len(valuesExpected), values, valuesExpected) + } + if len(timestamps) != len(timestampsExpected) { + t.Fatalf("unexpected len(timestamps); got %d; want %d\ntimestamps=\n%v\ntimestampsExpected=\n%v", + len(timestamps), len(timestampsExpected), timestamps, timestampsExpected) + } + if len(values) != len(timestamps) { + t.Fatalf("len(values) doesn't match len(timestamps); got %d vs %d", len(values), len(timestamps)) + } + for i, v := range values { + ts := timestamps[i] + tsExpected := timestampsExpected[i] + if ts != tsExpected { + t.Fatalf("unexpected timestamp at timestamps[%d]; got %d; want %d\ntimestamps=\n%v\ntimestampsExpected=\n%v", + i, ts, tsExpected, timestamps, timestampsExpected) + } + vExpected := valuesExpected[i] + if math.IsNaN(v) { + if !math.IsNaN(vExpected) { + t.Fatalf("unexpected nan value at values[%d]; want %f\nvalues=\n%v\nvaluesExpected=\n%v", + i, vExpected, values, valuesExpected) + } + continue + } + if v != vExpected { + t.Fatalf("unexpected value at values[%d]; got %f; want %f\nvalues=\n%v\nvaluesExpected=\n%v", + i, v, vExpected, values, valuesExpected) + } + } +} diff --git a/app/vmselect/promql/rollup_timing_test.go b/app/vmselect/promql/rollup_timing_test.go new file mode 100644 index 000000000..708231b5b --- /dev/null +++ b/app/vmselect/promql/rollup_timing_test.go @@ -0,0 +1,43 @@ +package promql + +import ( + "math/rand" + "sync" + "testing" +) + +func BenchmarkRollupAvg(b *testing.B) { + rfa := &rollupFuncArg{ + values: benchValues, + } + + b.ReportAllocs() + b.SetBytes(int64(len(benchValues))) + b.RunParallel(func(pb *testing.PB) { + var vSum float64 + for pb.Next() { + vSum += rollupAvg(rfa) + } + SinkLock.Lock() + Sink += vSum + SinkLock.Unlock() + }) +} + +var ( + // Sink is a global sink for benchmarks. + // It guarantees the compiler doesn't remove the code in benchmarks, + // which writes data to the Sink. + Sink float64 + + // SinkLock locks Sink. + SinkLock sync.Mutex +) + +var benchValues = func() []float64 { + values := make([]float64, 1000) + for i := range values { + values[i] = rand.Float64() * 100 + } + return values +}() diff --git a/app/vmselect/promql/timeseries.go b/app/vmselect/promql/timeseries.go new file mode 100644 index 000000000..578e27ad6 --- /dev/null +++ b/app/vmselect/promql/timeseries.go @@ -0,0 +1,383 @@ +package promql + +import ( + "fmt" + "sort" + "strconv" + "unsafe" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +type timeseries struct { + MetricName storage.MetricName + Values []float64 + Timestamps []int64 + + // Whether the timeseries may be re-used. + // Timeseries may be re-used only if their members own values + // they refer to. + denyReuse bool +} + +func (ts *timeseries) Reset() { + if ts.denyReuse { + *ts = timeseries{} + return + } + + ts.MetricName.Reset() + ts.Values = ts.Values[:0] + ts.Timestamps = ts.Timestamps[:0] +} + +func (ts *timeseries) String() string { + return fmt.Sprintf("MetricName=%s, Values=%g, Timestamps=%d", &ts.MetricName, ts.Values, ts.Timestamps) +} + +func (ts *timeseries) CopyFrom(src *timeseries) { + ts.Reset() + ts.MetricName.CopyFrom(&src.MetricName) + ts.Values = append(ts.Values[:0], src.Values...) + ts.Timestamps = append(ts.Timestamps[:0], src.Timestamps...) +} + +func (ts *timeseries) CopyFromMetricNames(src *timeseries) { + ts.Reset() + ts.MetricName.CopyFrom(&src.MetricName) + ts.Values = src.Values + ts.Timestamps = src.Timestamps + + ts.denyReuse = true +} + +func (ts *timeseries) CopyShallow(src *timeseries) { + *ts = *src + ts.denyReuse = true +} + +func marshalTimeseriesFast(tss []*timeseries, maxSize int, step int64) []byte { + if len(tss) == 0 { + logger.Panicf("BUG: tss cannot be empty") + } + + // Calculate the required size for marshaled tss. + size := 0 + for _, ts := range tss { + size += ts.marshaledFastSizeNoTimestamps() + } + // timestamps are stored only once for all the tss, since they are identical. + assertIdenticalTimestamps(tss, step) + size += 8 * len(tss[0].Timestamps) + + if size > maxSize { + // Do not marshal tss, since it would occupy too much space + return nil + } + + // Allocate the buffer for the marshaled tss before its' marshaling. + // This should reduce memory fragmentation and memory usage. + dst := make([]byte, 0, size) + dst = marshalFastTimestamps(dst, tss[0].Timestamps) + for _, ts := range tss { + dst = ts.marshalFastNoTimestamps(dst) + } + return dst +} + +// unmarshalTimeseriesFast unmarshals timeseries from src. +// +// The returned timeseries refer to src, so it is unsafe to modify it +// until timeseries are in use. +func unmarshalTimeseriesFast(src []byte) ([]*timeseries, error) { + tail, timestamps, err := unmarshalFastTimestamps(src) + if err != nil { + return nil, err + } + src = tail + + var tss []*timeseries + for len(src) > 0 { + var ts timeseries + ts.denyReuse = false + ts.Timestamps = timestamps + + tail, err := ts.unmarshalFastNoTimestamps(src) + if err != nil { + return nil, err + } + src = tail + + tss = append(tss, &ts) + } + return tss, nil +} + +// marshaledFastSizeNoTimestamps returns the size of marshaled ts +// returned from marshalFastNoTimestamps. +func (ts *timeseries) marshaledFastSizeNoTimestamps() int { + mn := &ts.MetricName + n := 2 + len(mn.MetricGroup) + n += 2 // Length of tags. + for i := range mn.Tags { + tag := &mn.Tags[i] + n += 2 + len(tag.Key) + n += 2 + len(tag.Value) + } + n += 8 * len(ts.Values) + return n +} + +// marshalFastNoTimestamps appends marshaled ts to dst and returns the result. +// +// It doesn't marshal timestamps. +// +// The result must be unmarshaled with unmarshalFastNoTimestamps. +func (ts *timeseries) marshalFastNoTimestamps(dst []byte) []byte { + mn := &ts.MetricName + dst = marshalBytesFast(dst, mn.MetricGroup) + dst = encoding.MarshalUint16(dst, uint16(len(mn.Tags))) + // There is no need in tags' sorting - they must be sorted after unmarshaling. + for i := range mn.Tags { + tag := &mn.Tags[i] + dst = marshalBytesFast(dst, tag.Key) + dst = marshalBytesFast(dst, tag.Value) + } + + // Do not marshal len(ts.Values), since it is already encoded as len(ts.Timestamps) + // during marshalFastTimestamps. + var valuesBuf []byte + if len(ts.Values) > 0 { + valuesBuf = (*[maxByteSliceLen]byte)(unsafe.Pointer(&ts.Values[0]))[:len(ts.Values)*8] + } + dst = append(dst, valuesBuf...) + return dst +} + +func marshalFastTimestamps(dst []byte, timestamps []int64) []byte { + dst = encoding.MarshalUint32(dst, uint32(len(timestamps))) + var timestampsBuf []byte + if len(timestamps) > 0 { + timestampsBuf = (*[maxByteSliceLen]byte)(unsafe.Pointer(×tamps[0]))[:len(timestamps)*8] + } + dst = append(dst, timestampsBuf...) + return dst +} + +// it is unsafe modifying src while the returned timestamps is in use. +func unmarshalFastTimestamps(src []byte) ([]byte, []int64, error) { + if len(src) < 4 { + return src, nil, fmt.Errorf("cannot decode len(timestamps); got %d bytes; want at least %d bytes", len(src), 4) + } + timestampsCount := int(encoding.UnmarshalUint32(src)) + src = src[4:] + if timestampsCount == 0 { + return src, nil, nil + } + + bufSize := timestampsCount * 8 + if len(src) < bufSize { + return src, nil, fmt.Errorf("cannot unmarshal timestamps; got %d bytes; want at least %d bytes", len(src), bufSize) + } + timestamps := (*[maxByteSliceLen / 8]int64)(unsafe.Pointer(&src[0]))[:timestampsCount] + timestamps = timestamps[:len(timestamps):len(timestamps)] + src = src[bufSize:] + + return src, timestamps, nil +} + +// unmarshalFastNoTimestamps unmarshals ts from src, so ts members reference src. +// +// It is expected that ts.Timestamps is already unmarshaled. +// +// It is unsafe to modify src while ts is in use. +func (ts *timeseries) unmarshalFastNoTimestamps(src []byte) ([]byte, error) { + // ts members point to src, so they cannot be re-used. + ts.denyReuse = true + + tail, err := unmarshalMetricNameFast(&ts.MetricName, src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal MetricName: %s", err) + } + src = tail + + valuesCount := len(ts.Timestamps) + if valuesCount == 0 { + return src, nil + } + bufSize := valuesCount * 8 + if len(src) < bufSize { + return src, fmt.Errorf("cannot unmarshal values; got %d bytes; want at least %d bytes", len(src), bufSize) + } + values := (*[maxByteSliceLen / 8]float64)(unsafe.Pointer(&src[0]))[:valuesCount] + ts.Values = values[:len(values):len(values)] + + return src[bufSize:], nil +} + +// unmarshalMetricNameFast unmarshals mn from src, so mn members +// hold references to src. +// +// It is unsafe modifying src while mn is in use. +func unmarshalMetricNameFast(mn *storage.MetricName, src []byte) ([]byte, error) { + mn.Reset() + + tail, metricGroup, err := unmarshalBytesFast(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal MetricGroup: %s", err) + } + src = tail + mn.MetricGroup = metricGroup[:len(metricGroup):len(metricGroup)] + + if len(src) < 2 { + return src, fmt.Errorf("not enough bytes for unmarshaling len(tags); need at least 2 bytes; got %d bytes", len(src)) + } + tagsLen := encoding.UnmarshalUint16(src) + src = src[2:] + if n := int(tagsLen) - cap(mn.Tags); n > 0 { + mn.Tags = append(mn.Tags[:cap(mn.Tags)], make([]storage.Tag, n)...) + } + mn.Tags = mn.Tags[:tagsLen] + for i := range mn.Tags { + tail, key, err := unmarshalBytesFast(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal key for tag[%d]: %s", i, err) + } + src = tail + + tail, value, err := unmarshalBytesFast(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal value for tag[%d]: %s", i, err) + } + src = tail + + tag := &mn.Tags[i] + tag.Key = key[:len(key):len(key)] + tag.Value = value[:len(value):len(value)] + } + return src, nil +} + +func marshalMetricTagsFast(dst []byte, tags []storage.Tag) []byte { + for i := range tags { + tag := &tags[i] + dst = marshalBytesFast(dst, tag.Key) + dst = marshalBytesFast(dst, tag.Value) + } + return dst +} + +func marshalMetricNameSorted(dst []byte, mn *storage.MetricName) []byte { + // Do not marshal AccountID and ProjectID, since they are unused. + dst = marshalBytesFast(dst, mn.MetricGroup) + sortMetricTags(mn.Tags) + dst = marshalMetricTagsFast(dst, mn.Tags) + return dst +} + +func marshalMetricTagsSorted(dst []byte, mn *storage.MetricName) []byte { + sortMetricTags(mn.Tags) + return marshalMetricTagsFast(dst, mn.Tags) +} + +func sortMetricTags(tags []storage.Tag) { + less := func(i, j int) bool { + return string(tags[i].Key) < string(tags[j].Key) + } + if sort.SliceIsSorted(tags, less) { + return + } + sort.Slice(tags, less) +} + +func marshalBytesFast(dst []byte, s []byte) []byte { + dst = encoding.MarshalUint16(dst, uint16(len(s))) + dst = append(dst, s...) + return dst +} + +func unmarshalBytesFast(src []byte) ([]byte, []byte, error) { + if len(src) < 2 { + return src, nil, fmt.Errorf("cannot decode size form src=%X; it must be at least 2 bytes", src) + } + n := encoding.UnmarshalUint16(src) + src = src[2:] + if len(src) < int(n) { + return src, nil, fmt.Errorf("too short src=%X; it must be at least %d bytes", src, n) + } + return src[n:], src[:n], nil +} + +func stringMetricName(mn *storage.MetricName) string { + var dst []byte + dst = append(dst, mn.MetricGroup...) + sortMetricTags(mn.Tags) + dst = appendStringMetricTags(dst, mn.Tags) + return string(dst) +} + +func stringMetricTags(mn *storage.MetricName) string { + var dst []byte + sortMetricTags(mn.Tags) + dst = appendStringMetricTags(dst, mn.Tags) + return string(dst) +} + +func appendStringMetricTags(dst []byte, tags []storage.Tag) []byte { + dst = append(dst, '{') + for i := range tags { + tag := &tags[i] + dst = append(dst, tag.Key...) + dst = append(dst, '=') + value := bytesutil.ToUnsafeString(tag.Value) + dst = strconv.AppendQuote(dst, value) + if i+1 < len(tags) { + dst = append(dst, ", "...) + } + } + dst = append(dst, '}') + return dst +} + +func assertIdenticalTimestamps(tss []*timeseries, step int64) { + if len(tss) == 0 { + return + } + tsGolden := tss[0] + if len(tsGolden.Values) != len(tsGolden.Timestamps) { + logger.Panicf("BUG: len(tsGolden.Values) must match len(tsGolden.Timestamps); got %d vs %d", len(tsGolden.Values), len(tsGolden.Timestamps)) + } + if len(tsGolden.Timestamps) > 0 { + prevTimestamp := tsGolden.Timestamps[0] + for _, timestamp := range tsGolden.Timestamps[1:] { + if timestamp-prevTimestamp != step { + logger.Panicf("BUG: invalid step between timestamps; got %d; want %d; tsGolden.Timestamps=%d", timestamp-prevTimestamp, step, tsGolden.Timestamps) + } + prevTimestamp = timestamp + } + } + for _, ts := range tss { + if len(ts.Values) != len(tsGolden.Values) { + logger.Panicf("BUG: unexpected len(ts.Values); got %d; want %d; ts.Values=%g", len(ts.Values), len(tsGolden.Values), ts.Values) + } + if len(ts.Timestamps) != len(tsGolden.Timestamps) { + logger.Panicf("BUG: unexpected len(ts.Timestamps); got %d; want %d; ts.Timestamps=%d", len(ts.Timestamps), len(tsGolden.Timestamps), ts.Timestamps) + } + if len(ts.Timestamps) == 0 { + continue + } + if &ts.Timestamps[0] == &tsGolden.Timestamps[0] { + // Fast path - shared timestamps. + continue + } + for i := range ts.Timestamps { + if ts.Timestamps[i] != tsGolden.Timestamps[i] { + logger.Panicf("BUG: timestamps mismatch at position %d; got %d; want %d; ts.Timestamps=%d, tsGolden.Timestamps=%d", + i, ts.Timestamps[i], tsGolden.Timestamps[i], ts.Timestamps, tsGolden.Timestamps) + } + } + } +} diff --git a/app/vmselect/promql/timeseries_test.go b/app/vmselect/promql/timeseries_test.go new file mode 100644 index 000000000..fb1c6ad54 --- /dev/null +++ b/app/vmselect/promql/timeseries_test.go @@ -0,0 +1,104 @@ +package promql + +import ( + "fmt" + "os" + "reflect" + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" +) + +func TestMain(m *testing.M) { + n := m.Run() + os.Exit(n) +} + +func TestTimeseriesMarshalUnmarshalFast(t *testing.T) { + t.Run("single", func(t *testing.T) { + var tsOrig timeseries + buf := tsOrig.marshalFastNoTimestamps(nil) + n := tsOrig.marshaledFastSizeNoTimestamps() + if n != len(buf) { + t.Fatalf("unexpected marshaled size; got %d; want %d", n, len(buf)) + } + + var tsGot timeseries + tail, err := tsGot.unmarshalFastNoTimestamps(buf) + if err != nil { + t.Fatalf("cannot unmarshal timeseries: %s", err) + } + if len(tail) > 0 { + t.Fatalf("unexpected non-empty tail left: len(tail)=%d; tail=%X", len(tail), tail) + } + tsOrig.denyReuse = true + tsOrig.MetricName.MetricGroup = []byte{} + if !reflect.DeepEqual(&tsOrig, &tsGot) { + t.Fatalf("unexpected ts\ngot:\n%s\nwant:\n%s", &tsGot, &tsOrig) + } + }) + t.Run("multiple", func(t *testing.T) { + var dst []byte + var tssOrig []*timeseries + timestamps := []int64{2} + for i := 0; i < 10; i++ { + var ts timeseries + ts.denyReuse = true + ts.MetricName.MetricGroup = []byte(fmt.Sprintf("metricGroup %d", i)) + ts.MetricName.Tags = []storage.Tag{{ + Key: []byte(fmt.Sprintf("key %d", i)), + Value: []byte(fmt.Sprintf("value %d", i)), + }} + ts.Values = []float64{float64(i) + 0.2} + ts.Timestamps = timestamps + + dstLen := len(dst) + dst = ts.marshalFastNoTimestamps(dst) + n := ts.marshaledFastSizeNoTimestamps() + if n != len(dst)-dstLen { + t.Fatalf("unexpected marshaled size on iteration %d; got %d; want %d", i, n, len(dst)-dstLen) + } + + var tsGot timeseries + tsGot.Timestamps = ts.Timestamps + tail, err := tsGot.unmarshalFastNoTimestamps(dst[dstLen:]) + if err != nil { + t.Fatalf("cannot unmarshal timeseries on iteration %d: %s", i, err) + } + if len(tail) > 0 { + t.Fatalf("unexpected non-empty tail left on iteration %d: len(tail)=%d; tail=%x", i, len(tail), tail) + } + if !reflect.DeepEqual(&ts, &tsGot) { + t.Fatalf("unexpected ts on iteration %d\ngot:\n%s\nwant:\n%s", i, &tsGot, &ts) + } + + tssOrig = append(tssOrig, &ts) + } + buf := marshalTimeseriesFast(tssOrig, 1e6, 123) + tssGot, err := unmarshalTimeseriesFast(buf) + if err != nil { + t.Fatalf("error in unmarshalTimeseriesFast: %s", err) + } + if !reflect.DeepEqual(tssOrig, tssGot) { + t.Fatalf("unexpected unmarshaled timeseries\ngot:\n%s\nwant:\n%s", tssGot, tssOrig) + } + + src := dst + for i := 0; i < 10; i++ { + tsOrig := tssOrig[i] + var ts timeseries + ts.Timestamps = tsOrig.Timestamps + tail, err := ts.unmarshalFastNoTimestamps(src) + if err != nil { + t.Fatalf("cannot unmarshal timeseries[%d]: %s", i, err) + } + src = tail + if !reflect.DeepEqual(tsOrig, &ts) { + t.Fatalf("unexpected ts on iteration %d:\n%+v\nwant:\n%+v", i, &ts, tsOrig) + } + } + if len(src) > 0 { + t.Fatalf("unexpected tail left; len(tail)=%d; tail=%X", len(src), src) + } + }) +} diff --git a/app/vmselect/promql/transform.go b/app/vmselect/promql/transform.go new file mode 100644 index 000000000..8608e7394 --- /dev/null +++ b/app/vmselect/promql/transform.go @@ -0,0 +1,1200 @@ +package promql + +import ( + "fmt" + "math" + "math/rand" + "sort" + "strconv" + "strings" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/valyala/histogram" +) + +var transformFuncsKeepMetricGroup = map[string]bool{ + "ceil": true, + "clamp_max": true, + "clamp_min": true, + "floor": true, + "round": true, +} + +var transformFuncs = map[string]transformFunc{ + // Standard promql funcs + // See funcs accepting instant-vector on https://prometheus.io/docs/prometheus/latest/querying/functions/ . + "abs": newTransformFuncOneArg(transformAbs), + "absent": transformAbsent, + "ceil": newTransformFuncOneArg(transformCeil), + "clamp_max": transformClampMax, + "clamp_min": transformClampMin, + "day_of_month": newTransformFuncDateTime(transformDayOfMonth), + "day_of_week": newTransformFuncDateTime(transformDayOfWeek), + "days_in_month": newTransformFuncDateTime(transformDaysInMonth), + "exp": newTransformFuncOneArg(transformExp), + "floor": newTransformFuncOneArg(transformFloor), + "histogram_quantile": transformHistogramQuantile, + "hour": newTransformFuncDateTime(transformHour), + "label_join": transformLabelJoin, + "label_replace": transformLabelReplace, + "ln": newTransformFuncOneArg(transformLn), + "log2": newTransformFuncOneArg(transformLog2), + "log10": newTransformFuncOneArg(transformLog10), + "minute": newTransformFuncDateTime(transformMinute), + "month": newTransformFuncDateTime(transformMonth), + "round": transformRound, + "scalar": transformScalar, + "sort": newTransformFuncSort(false), + "sort_desc": newTransformFuncSort(true), + "sqrt": newTransformFuncOneArg(transformSqrt), + "time": transformTime, + "timestamp": transformTimestamp, + "vector": transformVector, + "year": newTransformFuncDateTime(transformYear), + + // New funcs + "label_set": transformLabelSet, + "label_del": transformLabelDel, + "label_keep": transformLabelKeep, + "label_copy": transformLabelCopy, + "label_move": transformLabelMove, + "union": transformUnion, + "": transformUnion, // empty func is a synonim to union + "keep_last_value": transformKeepLastValue, + "start": newTransformFuncZeroArgs(transformStart), + "end": newTransformFuncZeroArgs(transformEnd), + "step": newTransformFuncZeroArgs(transformStep), + "running_sum": newTransformFuncRunning(runningSum), + "running_max": newTransformFuncRunning(runningMax), + "running_min": newTransformFuncRunning(runningMin), + "running_avg": newTransformFuncRunning(runningAvg), + "range_sum": newTransformFuncRange(runningSum), + "range_max": newTransformFuncRange(runningMax), + "range_min": newTransformFuncRange(runningMin), + "range_avg": newTransformFuncRange(runningAvg), + "range_first": transformRangeFirst, + "range_last": transformRangeLast, + "range_quantile": transformRangeQuantile, + "smooth_exponential": transformSmoothExponential, + "remove_resets": transformRemoveResets, + "rand": newTransformRand(newRandFloat64), + "rand_normal": newTransformRand(newRandNormFloat64), + "rand_exponential": newTransformRand(newRandExpFloat64), + "pi": transformPi, + "sin": newTransformFuncOneArg(transformSin), + "cos": newTransformFuncOneArg(transformCos), + "asin": newTransformFuncOneArg(transformAsin), + "acos": newTransformFuncOneArg(transformAcos), +} + +func getTransformFunc(s string) transformFunc { + s = strings.ToLower(s) + return transformFuncs[s] +} + +func isTransformFunc(s string) bool { + return getTransformFunc(s) != nil +} + +type transformFuncArg struct { + ec *EvalConfig + fe *funcExpr + args [][]*timeseries +} + +type transformFunc func(tfa *transformFuncArg) ([]*timeseries, error) + +func newTransformFuncOneArg(tf func(v float64) float64) transformFunc { + tfe := func(values []float64) { + for i, v := range values { + values[i] = tf(v) + } + } + return func(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + return doTransformValues(args[0], tfe, tfa.fe) + } +} + +func doTransformValues(arg []*timeseries, tf func(values []float64), fe *funcExpr) ([]*timeseries, error) { + keepMetricGroup := transformFuncsKeepMetricGroup[fe.Name] + for _, ts := range arg { + if !keepMetricGroup { + ts.MetricName.ResetMetricGroup() + } + tf(ts.Values) + } + return arg, nil +} + +func transformAbs(v float64) float64 { + return math.Abs(v) +} + +func transformAbsent(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + arg := args[0] + + if len(arg) == 0 { + // Copy tags from arg + rvs := evalNumber(tfa.ec, 1) + rv := rvs[0] + me, ok := tfa.fe.Args[0].(*metricExpr) + if !ok { + return rvs, nil + } + for i := range me.TagFilters { + tf := &me.TagFilters[i] + if len(tf.Key) == 0 { + continue + } + if tf.IsRegexp || tf.IsNegative { + continue + } + rv.MetricName.AddTagBytes(tf.Key, tf.Value) + } + return rvs, nil + } + + for _, ts := range arg { + ts.MetricName.ResetMetricGroup() + for i, v := range ts.Values { + if !math.IsNaN(v) { + v = nan + } else { + v = 1 + } + ts.Values[i] = v + } + } + return arg, nil +} + +func transformCeil(v float64) float64 { + return math.Ceil(v) +} + +func transformClampMax(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + maxs, err := getScalar(args[1], 1) + if err != nil { + return nil, err + } + tf := func(values []float64) { + for i, v := range values { + if v > maxs[i] { + values[i] = maxs[i] + } + } + } + return doTransformValues(args[0], tf, tfa.fe) +} + +func transformClampMin(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + mins, err := getScalar(args[1], 1) + if err != nil { + return nil, err + } + tf := func(values []float64) { + for i, v := range values { + if v < mins[i] { + values[i] = mins[i] + } + } + } + return doTransformValues(args[0], tf, tfa.fe) +} + +func newTransformFuncDateTime(f func(t time.Time) int) transformFunc { + return func(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) > 1 { + return nil, fmt.Errorf(`too many args; got %d; want up to %d`, len(args), 1) + } + var arg []*timeseries + if len(args) == 0 { + arg = evalTime(tfa.ec) + } else { + arg = args[0] + } + tf := func(values []float64) { + for i, v := range values { + t := time.Unix(int64(v), 0).UTC() + values[i] = float64(f(t)) + } + } + return doTransformValues(arg, tf, tfa.fe) + } +} + +func transformDayOfMonth(t time.Time) int { + return t.Day() +} + +func transformDayOfWeek(t time.Time) int { + return int(t.Weekday()) +} + +func transformDaysInMonth(t time.Time) int { + m := t.Month() + if m == 2 && isLeapYear(uint32(t.Year())) { + return 29 + } + return daysInMonth[m] +} + +func transformExp(v float64) float64 { + return math.Exp(v) +} + +func transformFloor(v float64) float64 { + return math.Floor(v) +} + +func transformHistogramQuantile(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + phis, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + + // Group metrics by all tags excluding "le" + type x struct { + le float64 + ts *timeseries + } + m := make(map[string][]x) + bb := bbPool.Get() + for _, ts := range args[1] { + tagValue := ts.MetricName.GetTagValue("le") + if len(tagValue) == 0 { + continue + } + le, err := strconv.ParseFloat(bytesutil.ToUnsafeString(tagValue), 64) + if err != nil { + continue + } + var dst timeseries + dst.CopyFrom(ts) + dst.MetricName.ResetMetricGroup() + dst.MetricName.RemoveTag("le") + bb.B = marshalMetricTagsSorted(bb.B[:0], &dst.MetricName) + m[string(bb.B)] = append(m[string(bb.B)], x{ + le: le, + ts: &dst, + }) + } + bbPool.Put(bb) + + // Calculate quantile for each group in m + lastNonInf := func(xss []x) float64 { + for len(xss) > 0 && math.IsInf(xss[len(xss)-1].le, 0) { + xss = xss[:len(xss)-1] + } + if len(xss) == 0 { + return nan + } + return xss[len(xss)-1].le + } + quantile := func(i int, phis []float64, xss []x) float64 { + vPrev := float64(0) + lePrev := float64(0) + phi := phis[i] + if math.IsNaN(phi) { + return nan + } + if phi < 0 { + return -inf + } + if phi > 1 { + return inf + } + vReq := xss[len(xss)-1].ts.Values[i] * phi + for _, xs := range xss { + v := xs.ts.Values[i] + le := xs.le + if v <= vPrev { + v = vPrev + le = lePrev + } + if v < vReq { + vPrev = v + lePrev = le + continue + } + if math.IsInf(le, 0) { + return lastNonInf(xss) + } + if v == vPrev { + return lePrev + } + return lePrev + (le-lePrev)*(vReq-vPrev)/(v-vPrev) + } + return lastNonInf(xss) + } + var rvs []*timeseries + for _, xss := range m { + sort.Slice(xss, func(i, j int) bool { + return xss[i].le < xss[j].le + }) + dst := xss[0].ts + for i := range dst.Values { + dst.Values[i] = quantile(i, phis, xss) + } + rvs = append(rvs, dst) + } + + return rvs, nil +} + +func transformHour(t time.Time) int { + return t.Hour() +} + +func runningSum(a, b float64, idx int) float64 { + return a + b +} + +func runningMax(a, b float64, idx int) float64 { + if a > b { + return a + } + return b +} + +func runningMin(a, b float64, idx int) float64 { + if a < b { + return a + } + return b +} + +func runningAvg(a, b float64, idx int) float64 { + // See `Rapid calculation methods` at https://en.wikipedia.org/wiki/Standard_deviation + return a + (b-a)/float64(idx+1) +} + +func keepLastValue(a, b float64, idx int) float64 { + if math.IsNaN(b) { + return a + } + return b +} + +func skipLeadingNaNs(values []float64) []float64 { + i := 0 + for i < len(values) && math.IsNaN(values[i]) { + i++ + } + return values[i:] +} + +func skipTrailingNaNs(values []float64) []float64 { + i := len(values) - 1 + for i >= 0 && math.IsNaN(values[i]) { + i-- + } + return values[:i+1] +} + +func transformKeepLastValue(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + values := ts.Values + if len(values) == 0 { + continue + } + prevValue := values[0] + for i, v := range values { + if math.IsNaN(v) { + v = prevValue + } + values[i] = v + prevValue = v + } + } + return rvs, nil +} + +func newTransformFuncRunning(rf func(a, b float64, idx int) float64) transformFunc { + return func(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + + rvs := args[0] + for _, ts := range rvs { + ts.MetricName.ResetMetricGroup() + values := skipLeadingNaNs(ts.Values) + if len(values) == 0 { + continue + } + prevValue := values[0] + values = values[1:] + for i, v := range values { + if math.IsNaN(v) { + continue + } + prevValue = rf(prevValue, v, i+1) + values[i] = prevValue + } + } + return rvs, nil + } +} + +func newTransformFuncRange(rf func(a, b float64, idx int) float64) transformFunc { + tfr := newTransformFuncRunning(rf) + return func(tfa *transformFuncArg) ([]*timeseries, error) { + rvs, err := tfr(tfa) + if err != nil { + return nil, err + } + setLastValues(rvs) + return rvs, nil + } +} + +func transformRangeQuantile(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + phis, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + if len(phis) == 0 { + return nil, nil + } + phi := phis[0] + rvs := args[1] + hf := histogram.GetFast() + for _, ts := range rvs { + hf.Reset() + lastIdx := -1 + values := ts.Values + if len(values) > 0 { + // Ignore the last value. See Exec func for details. + values = values[:len(values)-1] + } + for i, v := range values { + if math.IsNaN(v) { + continue + } + hf.Update(v) + lastIdx = i + } + if lastIdx >= 0 { + values[lastIdx] = hf.Quantile(phi) + } + } + histogram.PutFast(hf) + setLastValues(rvs) + return rvs, nil +} + +func transformRangeFirst(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + values := skipLeadingNaNs(ts.Values) + if len(values) == 0 { + continue + } + vFirst := values[0] + for i, v := range values { + if math.IsNaN(v) { + continue + } + values[i] = vFirst + } + } + return rvs, nil +} + +func transformRangeLast(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + setLastValues(rvs) + return rvs, nil +} + +func setLastValues(tss []*timeseries) { + for _, ts := range tss { + values := ts.Values + if len(values) < 2 { + continue + } + // Do not take into account the last value, since it shouldn't be included + // in the range. See Exec func for details. + values = values[:len(values)-1] + values = skipTrailingNaNs(values) + if len(values) == 0 { + continue + } + vLast := values[len(values)-1] + for i, v := range values { + if math.IsNaN(v) { + continue + } + values[i] = vLast + } + } +} + +func transformSmoothExponential(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 2); err != nil { + return nil, err + } + sfs, err := getScalar(args[1], 1) + if err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + values := skipLeadingNaNs(ts.Values) + if len(values) == 0 { + continue + } + avg := values[0] + values = values[1:] + sfsX := sfs[len(ts.Values)-len(values):] + for i, v := range values { + if math.IsNaN(v) { + continue + } + sf := sfsX[i] + if math.IsNaN(sf) { + sf = 1 + } + if sf < 0 { + sf = 0 + } + if sf > 1 { + sf = 1 + } + avg = avg*(1-sf) + v*sf + values[i] = avg + } + } + return rvs, nil +} + +func transformRemoveResets(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + removeCounterResetsMaybeNaNs(ts.Values) + } + return rvs, nil +} + +func transformUnion(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) < 1 { + return evalNumber(tfa.ec, nan), nil + } + + rvs := make([]*timeseries, 0, len(args[0])) + m := make(map[string]bool, len(args[0])) + bb := bbPool.Get() + for _, arg := range args { + for _, ts := range arg { + bb.B = marshalMetricNameSorted(bb.B[:0], &ts.MetricName) + if m[string(bb.B)] { + continue + } + m[string(bb.B)] = true + var dst timeseries + dst.CopyFrom(ts) + rvs = append(rvs, &dst) + } + } + bbPool.Put(bb) + return rvs, nil +} + +func transformLabelKeep(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) < 1 { + return nil, fmt.Errorf(`not enough args; got %d; want at least %d`, len(args), 1) + } + var keepLabels []string + for i := 1; i < len(args); i++ { + keepLabel, err := getString(args[i], i) + if err != nil { + return nil, err + } + keepLabels = append(keepLabels, keepLabel) + } + + rvs := args[0] + for _, ts := range rvs { + ts.MetricName.RemoveTagsOn(keepLabels) + } + return rvs, nil +} + +func transformLabelDel(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) < 1 { + return nil, fmt.Errorf(`not enough args; got %d; want at least %d`, len(args), 1) + } + var delLabels []string + for i := 1; i < len(args); i++ { + delLabel, err := getString(args[i], i) + if err != nil { + return nil, err + } + delLabels = append(delLabels, delLabel) + } + + rvs := args[0] + for _, ts := range rvs { + ts.MetricName.RemoveTagsIgnoring(delLabels) + } + return rvs, nil +} + +func transformLabelSet(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) < 1 { + return nil, fmt.Errorf(`not enough args; got %d; want at least %d`, len(args), 1) + } + dstLabels, dstValues, err := getStringPairs(args[1:]) + if err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + mn := &ts.MetricName + for i, dstLabel := range dstLabels { + value := dstValues[i] + dstValue := getDstValue(mn, dstLabel) + *dstValue = append((*dstValue)[:0], value...) + if len(value) == 0 { + mn.RemoveTag(dstLabel) + } + } + } + return rvs, nil +} + +func transformLabelCopy(tfa *transformFuncArg) ([]*timeseries, error) { + return transformLabelCopyExt(tfa, false) +} + +func transformLabelMove(tfa *transformFuncArg) ([]*timeseries, error) { + return transformLabelCopyExt(tfa, true) +} + +func transformLabelCopyExt(tfa *transformFuncArg, removeSrcLabels bool) ([]*timeseries, error) { + args := tfa.args + if len(args) < 1 { + return nil, fmt.Errorf(`not enough args; got %d; want at least %d`, len(args), 1) + } + srcLabels, dstLabels, err := getStringPairs(args[1:]) + if err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + mn := &ts.MetricName + for i, srcLabel := range srcLabels { + dstLabel := dstLabels[i] + value := mn.GetTagValue(srcLabel) + dstValue := getDstValue(mn, dstLabel) + *dstValue = append((*dstValue)[:0], value...) + if len(value) == 0 { + mn.RemoveTag(dstLabel) + } + if removeSrcLabels && srcLabel != dstLabel { + mn.RemoveTag(srcLabel) + } + } + } + return rvs, nil +} + +func getStringPairs(args [][]*timeseries) ([]string, []string, error) { + if len(args)%2 != 0 { + return nil, nil, fmt.Errorf(`the number of string args must be even; got %d`, len(args)) + } + var ks, vs []string + for i := 0; i < len(args); i += 2 { + k, err := getString(args[i], i) + if err != nil { + return nil, nil, err + } + ks = append(ks, k) + + v, err := getString(args[i+1], i+1) + if err != nil { + return nil, nil, err + } + vs = append(vs, v) + } + return ks, vs, nil +} + +func transformLabelJoin(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) < 3 { + return nil, fmt.Errorf(`not enough args; got %d; want at least %d`, len(args), 3) + } + dstLabel, err := getString(args[1], 1) + if err != nil { + return nil, err + } + separator, err := getString(args[2], 2) + if err != nil { + return nil, err + } + var srcLabels []string + for i := 3; i < len(args); i++ { + srcLabel, err := getString(args[i], i) + if err != nil { + return nil, err + } + srcLabels = append(srcLabels, srcLabel) + } + + rvs := args[0] + for _, ts := range rvs { + mn := &ts.MetricName + dstValue := getDstValue(mn, dstLabel) + b := *dstValue + b = b[:0] + for j, srcLabel := range srcLabels { + srcValue := mn.GetTagValue(srcLabel) + b = append(b, srcValue...) + if j+1 < len(srcLabels) { + b = append(b, separator...) + } + } + *dstValue = b + if len(b) == 0 { + mn.RemoveTag(dstLabel) + } + } + return rvs, nil +} + +func transformLabelReplace(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 5); err != nil { + return nil, err + } + dstLabel, err := getString(args[1], 1) + if err != nil { + return nil, err + } + replacement, err := getString(args[2], 2) + if err != nil { + return nil, err + } + srcLabel, err := getString(args[3], 3) + if err != nil { + return nil, err + } + regex, err := getString(args[4], 4) + if err != nil { + return nil, err + } + + r, err := compileRegexpAnchored(regex) + if err != nil { + return nil, fmt.Errorf(`cannot compile regex %q: %s`, regex, err) + } + + replacementBytes := []byte(replacement) + + rvs := args[0] + for _, ts := range rvs { + mn := &ts.MetricName + dstValue := getDstValue(mn, dstLabel) + srcValue := mn.GetTagValue(srcLabel) + b := r.ReplaceAll(srcValue, replacementBytes) + *dstValue = append((*dstValue)[:0], b...) + if len(b) == 0 { + mn.RemoveTag(dstLabel) + } + } + return rvs, nil +} + +func transformLn(v float64) float64 { + return math.Log(v) +} + +func transformLog2(v float64) float64 { + return math.Log2(v) +} + +func transformLog10(v float64) float64 { + return math.Log10(v) +} + +func transformMinute(t time.Time) int { + return t.Minute() +} + +func transformMonth(t time.Time) int { + return int(t.Month()) +} + +func transformRound(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) != 1 && len(args) != 2 { + return nil, fmt.Errorf(`unexpected number of args: %d; want 1 or 2`, len(args)) + } + var nearestArg []*timeseries + if len(args) == 1 { + nearestArg = evalNumber(tfa.ec, 1) + } else { + nearestArg = args[1] + } + nearest, err := getScalar(nearestArg, 1) + if err != nil { + return nil, err + } + tf := func(values []float64) { + var nPrev float64 + var p10 float64 + for i, v := range values { + n := nearest[i] + if n != nPrev { + nPrev = n + _, e := decimal.FromFloat(n) + p10 = math.Pow10(int(-e)) + } + v += 0.5 * math.Copysign(n, v) + v -= math.Mod(v, n) + v, _ = math.Modf(v * p10) + values[i] = v / p10 + } + } + return doTransformValues(args[0], tf, tfa.fe) +} + +func transformScalar(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + + // Verify whether the arg is a string. + // Then try converting the string to number. + if se, ok := tfa.fe.Args[0].(*stringExpr); ok { + n, err := strconv.ParseFloat(se.S, 64) + if err != nil { + n = nan + } + return evalNumber(tfa.ec, n), nil + } + + // The arg isn't a string. Extract scalar from it. + arg := args[0] + if len(arg) != 1 { + return evalNumber(tfa.ec, nan), nil + } + arg[0].MetricName.Reset() + return arg, nil +} + +func newTransformFuncSort(isDesc bool) transformFunc { + return func(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + sort.Slice(rvs, func(i, j int) bool { + a := rvs[i].Values + b := rvs[j].Values + n := len(a) - 1 + for n >= 0 { + if !math.IsNaN(a[n]) && !math.IsNaN(b[n]) { + break + } + n-- + } + if n < 0 { + return false + } + cmp := a[n] < b[n] + if isDesc { + cmp = !cmp + } + return cmp + }) + return rvs, nil + } +} + +func transformSqrt(v float64) float64 { + return math.Sqrt(v) +} + +func transformSin(v float64) float64 { + return math.Sin(v) +} + +func transformCos(v float64) float64 { + return math.Cos(v) +} + +func transformAsin(v float64) float64 { + return math.Asin(v) +} + +func transformAcos(v float64) float64 { + return math.Acos(v) +} + +func newTransformRand(newRandFunc func(r *rand.Rand) func() float64) transformFunc { + return func(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if len(args) > 1 { + return nil, fmt.Errorf(`unexpected number of args; got %d; want 0 or 1`, len(args)) + } + var seed int64 + if len(args) == 1 { + tmp, err := getScalar(args[0], 0) + if err != nil { + return nil, err + } + seed = int64(tmp[0]) + } else { + seed = time.Now().UnixNano() + } + source := rand.NewSource(seed) + r := rand.New(source) + randFunc := newRandFunc(r) + tss := evalNumber(tfa.ec, 0) + values := tss[0].Values + for i := range values { + values[i] = randFunc() + } + return tss, nil + } +} + +func newRandFloat64(r *rand.Rand) func() float64 { + return r.Float64 +} + +func newRandNormFloat64(r *rand.Rand) func() float64 { + return r.NormFloat64 +} + +func newRandExpFloat64(r *rand.Rand) func() float64 { + return r.ExpFloat64 +} + +func transformPi(tfa *transformFuncArg) ([]*timeseries, error) { + if err := expectTransformArgsNum(tfa.args, 0); err != nil { + return nil, err + } + return evalNumber(tfa.ec, math.Pi), nil +} + +func transformTime(tfa *transformFuncArg) ([]*timeseries, error) { + if err := expectTransformArgsNum(tfa.args, 0); err != nil { + return nil, err + } + return evalTime(tfa.ec), nil +} + +func transformTimestamp(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + for _, ts := range rvs { + ts.MetricName.ResetMetricGroup() + values := ts.Values + for i, t := range ts.Timestamps { + values[i] = float64(t) / 1e3 + } + } + return rvs, nil +} + +func transformVector(tfa *transformFuncArg) ([]*timeseries, error) { + args := tfa.args + if err := expectTransformArgsNum(args, 1); err != nil { + return nil, err + } + rvs := args[0] + return rvs, nil +} + +func transformYear(t time.Time) int { + return t.Year() +} + +func newTransformFuncZeroArgs(f func(tfa *transformFuncArg) float64) transformFunc { + return func(tfa *transformFuncArg) ([]*timeseries, error) { + if err := expectTransformArgsNum(tfa.args, 0); err != nil { + return nil, err + } + v := f(tfa) + return evalNumber(tfa.ec, v), nil + } +} + +func transformStep(tfa *transformFuncArg) float64 { + return float64(tfa.ec.Step) * 1e-3 +} + +func transformStart(tfa *transformFuncArg) float64 { + return float64(tfa.ec.Start) * 1e-3 +} + +func transformEnd(tfa *transformFuncArg) float64 { + // Subtract step from end, since it shouldn't go to the range. + // See Exec func for details. + return float64(tfa.ec.End-tfa.ec.Step) * 1e-3 +} + +// copyTimeseriesMetricNames returns a copy of arg with real copy of MetricNames, +// but with shallow copy of Timestamps and Values. +func copyTimeseriesMetricNames(arg []*timeseries) []*timeseries { + rvs := make([]*timeseries, len(arg)) + for i, src := range arg { + var dst timeseries + dst.CopyFromMetricNames(src) + rvs[i] = &dst + } + return rvs +} + +// copyShallow returns a copy of arg with shallow copies of MetricNames, +// Timestamps and Values. +func copyTimeseriesShallow(arg []*timeseries) []*timeseries { + rvs := make([]*timeseries, len(arg)) + for i, src := range arg { + var dst timeseries + dst.CopyShallow(src) + rvs[i] = &dst + } + return rvs +} + +func getDstValue(mn *storage.MetricName, dstLabel string) *[]byte { + if dstLabel == "__name__" { + return &mn.MetricGroup + } + tags := mn.Tags + for i := range tags { + tag := &tags[i] + if string(tag.Key) == dstLabel { + return &tag.Value + } + } + if len(tags) < cap(tags) { + tags = tags[:len(tags)+1] + } else { + tags = append(tags, storage.Tag{}) + } + mn.Tags = tags + tag := &tags[len(tags)-1] + tag.Key = append(tag.Key[:0], dstLabel...) + return &tag.Value +} + +func isLeapYear(y uint32) bool { + if y%4 != 0 { + return false + } + if y%100 != 0 { + return true + } + return y%400 == 0 +} + +var daysInMonth = [...]int{ + time.January: 31, + time.February: 28, + time.March: 31, + time.April: 30, + time.May: 31, + time.June: 30, + time.July: 31, + time.August: 31, + time.September: 30, + time.October: 31, + time.November: 30, + time.December: 31, +} + +func expectTransformArgsNum(args [][]*timeseries, expectedNum int) error { + if len(args) == expectedNum { + return nil + } + return fmt.Errorf(`unexpected number of args; got %d; want %d`, len(args), expectedNum) +} + +func removeCounterResetsMaybeNaNs(values []float64) { + values = skipLeadingNaNs(values) + if len(values) == 0 { + return + } + var correction float64 + prevValue := values[0] + for i, v := range values { + if math.IsNaN(v) { + continue + } + d := v - prevValue + if d < 0 { + if (-d * 8) < prevValue { + // This is likely jitter from `Prometheus HA pairs`. + // Just substitute v with prevValue. + v = prevValue + } else { + correction += prevValue + } + } + prevValue = v + values[i] = v + correction + } +} diff --git a/app/vmstorage/README.md b/app/vmstorage/README.md new file mode 100644 index 000000000..6df28ba61 --- /dev/null +++ b/app/vmstorage/README.md @@ -0,0 +1,5 @@ +`vmstorage` performs the following tasks: + +- Accepts inserts from `vminsert` and stores them to local storage. + +- Performs select requests from `vmselect`. diff --git a/app/vmstorage/main.go b/app/vmstorage/main.go new file mode 100644 index 000000000..1e08b323a --- /dev/null +++ b/app/vmstorage/main.go @@ -0,0 +1,455 @@ +package vmstorage + +import ( + "flag" + "fmt" + "net/http" + "strings" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/storage" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/syncwg" + "github.com/VictoriaMetrics/metrics" +) + +var ( + retentionPeriod = flag.Int("retentionPeriod", 1, "Retention period in months") + snapshotAuthKey = flag.String("snapshotAuthKey", "", "authKey, which must be passed in query string to /snapshot* pages") + + precisionBits = flag.Int("precisionBits", 64, "The number of precision bits to store per each value. Lower precision bits improves data compression at the cost of precision loss") + + // DataPath is a path to storage data. + DataPath = flag.String("storageDataPath", "victoria-metrics-data", "Path to storage data") +) + +// Init initializes vmstorage. +func Init() { + if err := encoding.CheckPrecisionBits(uint8(*precisionBits)); err != nil { + logger.Fatalf("invalid `-precisionBits`: %s", err) + } + logger.Infof("opening storage at %q with retention period %d months", *DataPath, *retentionPeriod) + startTime := time.Now() + strg, err := storage.OpenStorage(*DataPath, *retentionPeriod) + if err != nil { + logger.Fatalf("cannot open a storage at %s with retention period %d months: %s", *DataPath, *retentionPeriod, err) + } + Storage = strg + + var m storage.Metrics + Storage.UpdateMetrics(&m) + tm := &m.TableMetrics + partsCount := tm.SmallPartsCount + tm.BigPartsCount + blocksCount := tm.SmallBlocksCount + tm.BigBlocksCount + rowsCount := tm.SmallRowsCount + tm.BigRowsCount + logger.Infof("successfully opened storage %q in %s; partsCount: %d; blocksCount: %d; rowsCount: %d", + *DataPath, time.Since(startTime), partsCount, blocksCount, rowsCount) + + registerStorageMetrics(Storage) +} + +// Storage is a storage. +// +// Every storage call must be wrapped into WG.Add(1) ... WG.Done() +// for proper graceful shutdown when Stop is called. +var Storage *storage.Storage + +// WG must be incremented before Storage call. +// +// Use syncwg instead of sync, since Add is called from concurrent goroutines. +var WG syncwg.WaitGroup + +// AddRows adds mrs to the storage. +func AddRows(mrs []storage.MetricRow) error { + WG.Add(1) + err := Storage.AddRows(mrs, uint8(*precisionBits)) + WG.Done() + return err +} + +// DeleteMetrics deletes metrics matching tfss. +// +// Returns the number of deleted metrics. +func DeleteMetrics(tfss []*storage.TagFilters) (int, error) { + WG.Add(1) + n, err := Storage.DeleteMetrics(tfss) + WG.Done() + return n, err +} + +// SearchTagKeys searches for tag keys +func SearchTagKeys(maxTagKeys int) ([]string, error) { + WG.Add(1) + keys, err := Storage.SearchTagKeys(maxTagKeys) + WG.Done() + return keys, err +} + +// SearchTagValues searches for tag values for the given tagKey +func SearchTagValues(tagKey []byte, maxTagValues int) ([]string, error) { + WG.Add(1) + values, err := Storage.SearchTagValues(tagKey, maxTagValues) + WG.Done() + return values, err +} + +// GetSeriesCount returns the number of time series in the storage. +func GetSeriesCount() (uint64, error) { + WG.Add(1) + n, err := Storage.GetSeriesCount() + WG.Done() + return n, err +} + +// Stop stops the vmstorage +func Stop() { + logger.Infof("gracefully closing the storage at %s", *DataPath) + startTime := time.Now() + WG.WaitAndBlock() + Storage.MustClose() + logger.Infof("successfully closed the storage in %s", time.Since(startTime)) + + logger.Infof("the storage has been stopped") +} + +// RequestHandler is a storage request handler. +func RequestHandler(w http.ResponseWriter, r *http.Request) bool { + path := r.URL.Path + prometheusCompatibleResponse := false + if path == "/api/v1/admin/tsdb/snapshot" { + // Handle Prometheus API - https://prometheus.io/docs/prometheus/latest/querying/api/#snapshot . + prometheusCompatibleResponse = true + path = "/snapshot/create" + } + if !strings.HasPrefix(path, "/snapshot") { + return false + } + authKey := r.FormValue("authKey") + if authKey != *snapshotAuthKey { + httpserver.Errorf(w, "invalid authKey %q. It must match the value from -snapshotAuthKey command line flag", authKey) + return true + } + path = path[len("/snapshot"):] + + switch path { + case "/create": + w.Header().Set("Content-Type", "application/json") + snapshotPath, err := Storage.CreateSnapshot() + if err != nil { + msg := fmt.Sprintf("cannot create snapshot: %s", err) + logger.Errorf("%s", msg) + fmt.Fprintf(w, `{"status":"error","msg":%q}`, msg) + return true + } + if prometheusCompatibleResponse { + fmt.Fprintf(w, `{"status":"success","data":{"name":%q}}`, snapshotPath) + } else { + fmt.Fprintf(w, `{"status":"ok","snapshot":%q}`, snapshotPath) + } + return true + case "/list": + w.Header().Set("Content-Type", "application/json") + snapshots, err := Storage.ListSnapshots() + if err != nil { + msg := fmt.Sprintf("cannot list snapshots: %s", err) + logger.Errorf("%s", msg) + fmt.Fprintf(w, `{"status":"error","msg":%q}`, msg) + return true + } + fmt.Fprintf(w, `{"status":"ok","snapshots":[`) + if len(snapshots) > 0 { + for _, snapshot := range snapshots[:len(snapshots)-1] { + fmt.Fprintf(w, "\n%q,", snapshot) + } + fmt.Fprintf(w, "\n%q\n", snapshots[len(snapshots)-1]) + } + fmt.Fprintf(w, `]}`) + return true + case "/delete": + w.Header().Set("Content-Type", "application/json") + snapshotName := r.FormValue("snapshot") + if err := Storage.DeleteSnapshot(snapshotName); err != nil { + msg := fmt.Sprintf("cannot delete snapshot %q: %s", snapshotName, err) + logger.Errorf("%s", msg) + fmt.Fprintf(w, `{"status":"error","msg":%q}`, msg) + return true + } + fmt.Fprintf(w, `{"status":"ok"}`) + return true + case "/delete_all": + w.Header().Set("Content-Type", "application/json") + snapshots, err := Storage.ListSnapshots() + if err != nil { + msg := fmt.Sprintf("cannot list snapshots: %s", err) + logger.Errorf("%s", msg) + fmt.Fprintf(w, `{"status":"error","msg":%q}`, msg) + return true + } + for _, snapshotName := range snapshots { + if err := Storage.DeleteSnapshot(snapshotName); err != nil { + msg := fmt.Sprintf("cannot delete snapshot %q: %s", snapshotName, err) + logger.Errorf("%s", msg) + fmt.Fprintf(w, `{"status":"error","msg":%q}`, msg) + return true + } + } + fmt.Fprintf(w, `{"status":"ok"}`) + return true + default: + return false + } +} + +func registerStorageMetrics(strg *storage.Storage) { + mCache := &storage.Metrics{} + var mCacheLock sync.Mutex + var lastUpdateTime time.Time + + m := func() *storage.Metrics { + mCacheLock.Lock() + defer mCacheLock.Unlock() + if time.Since(lastUpdateTime) < time.Second { + return mCache + } + var mc storage.Metrics + strg.UpdateMetrics(&mc) + mCache = &mc + lastUpdateTime = time.Now() + return mCache + } + tm := func() *storage.TableMetrics { + sm := m() + return &sm.TableMetrics + } + idbm := func() *storage.IndexDBMetrics { + sm := m() + return &sm.IndexDBMetrics + } + + metrics.NewGauge(`vm_active_merges{type="storage/big"}`, func() float64 { + return float64(tm().ActiveBigMerges) + }) + metrics.NewGauge(`vm_active_merges{type="storage/small"}`, func() float64 { + return float64(tm().ActiveSmallMerges) + }) + metrics.NewGauge(`vm_active_merges{type="indexdb"}`, func() float64 { + return float64(idbm().ActiveMerges) + }) + + metrics.NewGauge(`vm_merges_total{type="storage/big"}`, func() float64 { + return float64(tm().BigMergesCount) + }) + metrics.NewGauge(`vm_merges_total{type="storage/small"}`, func() float64 { + return float64(tm().SmallMergesCount) + }) + metrics.NewGauge(`vm_merges_total{type="indexdb"}`, func() float64 { + return float64(idbm().MergesCount) + }) + + metrics.NewGauge(`vm_rows_merged_total{type="storage/big"}`, func() float64 { + return float64(tm().BigRowsMerged) + }) + metrics.NewGauge(`vm_rows_merged_total{type="storage/small"}`, func() float64 { + return float64(tm().SmallRowsMerged) + }) + metrics.NewGauge(`vm_rows_merged_total{type="indexdb"}`, func() float64 { + return float64(idbm().ItemsMerged) + }) + + metrics.NewGauge(`vm_rows_deleted_total{type="storage/big"}`, func() float64 { + return float64(tm().BigRowsDeleted) + }) + metrics.NewGauge(`vm_rows_deleted_total{type="storage/small"}`, func() float64 { + return float64(tm().SmallRowsDeleted) + }) + + metrics.NewGauge(`vm_references{type="storage/big", name="parts"}`, func() float64 { + return float64(tm().BigPartsRefCount) + }) + metrics.NewGauge(`vm_references{type="storage/small", name="parts"}`, func() float64 { + return float64(tm().SmallPartsRefCount) + }) + metrics.NewGauge(`vm_references{type="storage", name="partitions"}`, func() float64 { + return float64(tm().PartitionsRefCount) + }) + metrics.NewGauge(`vm_references{type="indexdb", name="objects"}`, func() float64 { + return float64(idbm().IndexDBRefCount) + }) + metrics.NewGauge(`vm_references{type="indexdb", name="parts"}`, func() float64 { + return float64(idbm().PartsRefCount) + }) + + metrics.NewGauge(`vm_missing_tsids_for_metric_id_total`, func() float64 { + return float64(idbm().MissingTSIDsForMetricID) + }) + + metrics.NewGauge(`vm_assisted_merges_total{type="storage/small"}`, func() float64 { + return float64(tm().SmallAssistedMerges) + }) + metrics.NewGauge(`vm_assisted_merges_total{type="indexdb"}`, func() float64 { + return float64(idbm().AssistedMerges) + }) + + metrics.NewGauge(`vm_pending_rows{type="storage"}`, func() float64 { + return float64(tm().PendingRows) + }) + metrics.NewGauge(`vm_pending_rows{type="indexdb"}`, func() float64 { + return float64(idbm().PendingItems) + }) + + metrics.NewGauge(`vm_parts{type="storage/big"}`, func() float64 { + return float64(tm().BigPartsCount) + }) + metrics.NewGauge(`vm_parts{type="storage/small"}`, func() float64 { + return float64(tm().SmallPartsCount) + }) + metrics.NewGauge(`vm_parts{type="indexdb"}`, func() float64 { + return float64(idbm().PartsCount) + }) + + metrics.NewGauge(`vm_blocks{type="storage/big"}`, func() float64 { + return float64(tm().BigBlocksCount) + }) + metrics.NewGauge(`vm_blocks{type="storage/small"}`, func() float64 { + return float64(tm().SmallBlocksCount) + }) + metrics.NewGauge(`vm_blocks{type="indexdb"}`, func() float64 { + return float64(idbm().BlocksCount) + }) + + metrics.NewGauge(`vm_rows{type="storage/big"}`, func() float64 { + return float64(tm().BigRowsCount) + }) + metrics.NewGauge(`vm_rows{type="storage/small"}`, func() float64 { + return float64(tm().SmallRowsCount) + }) + metrics.NewGauge(`vm_rows{type="indexdb"}`, func() float64 { + return float64(idbm().ItemsCount) + }) + + metrics.NewGauge(`vm_cache_entries{type="storage/tsid"}`, func() float64 { + return float64(m().TSIDCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="storage/metricIDs"}`, func() float64 { + return float64(m().MetricIDCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="storage/metricName"}`, func() float64 { + return float64(m().MetricNameCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="storage/date_metricID"}`, func() float64 { + return float64(m().DateMetricIDCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="storage/bigIndexBlocks"}`, func() float64 { + return float64(tm().BigIndexBlocksCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="storage/smallIndexBlocks"}`, func() float64 { + return float64(tm().SmallIndexBlocksCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="indexdb/dataBlocks"}`, func() float64 { + return float64(idbm().DataBlocksCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="indexdb/indexBlocks"}`, func() float64 { + return float64(idbm().IndexBlocksCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="indexdb/tagFilters"}`, func() float64 { + return float64(idbm().TagCacheSize) + }) + metrics.NewGauge(`vm_cache_entries{type="storage/regexps"}`, func() float64 { + return float64(storage.RegexpCacheSize()) + }) + + metrics.NewGauge(`vm_cache_size_bytes{type="storage/tsid"}`, func() float64 { + return float64(m().TSIDCacheBytesSize) + }) + metrics.NewGauge(`vm_cache_size_bytes{type="storage/metricIDs"}`, func() float64 { + return float64(m().MetricIDCacheBytesSize) + }) + metrics.NewGauge(`vm_cache_size_bytes{type="storage/metricName"}`, func() float64 { + return float64(m().MetricNameCacheBytesSize) + }) + metrics.NewGauge(`vm_cache_size_bytes{type="storage/date_metricID"}`, func() float64 { + return float64(m().DateMetricIDCacheBytesSize) + }) + metrics.NewGauge(`vm_cache_size_bytes{type="indexdb/tagFilters"}`, func() float64 { + return float64(idbm().TagCacheBytesSize) + }) + + metrics.NewGauge(`vm_cache_requests_total{type="storage/tsid"}`, func() float64 { + return float64(m().TSIDCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="storage/metricIDs"}`, func() float64 { + return float64(m().MetricIDCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="storage/metricName"}`, func() float64 { + return float64(m().MetricNameCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="storage/date_metricID"}`, func() float64 { + return float64(m().DateMetricIDCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="storage/bigIndexBlocks"}`, func() float64 { + return float64(tm().BigIndexBlocksCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="storage/smallIndexBlocks"}`, func() float64 { + return float64(tm().SmallIndexBlocksCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="indexdb/dataBlocks"}`, func() float64 { + return float64(idbm().DataBlocksCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="indexdb/indexBlocks"}`, func() float64 { + return float64(idbm().IndexBlocksCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="indexdb/tagFilters"}`, func() float64 { + return float64(idbm().TagCacheRequests) + }) + metrics.NewGauge(`vm_cache_requests_total{type="storage/regexps"}`, func() float64 { + return float64(storage.RegexpCacheRequests()) + }) + + metrics.NewGauge(`vm_cache_misses_total{type="storage/tsid"}`, func() float64 { + return float64(m().TSIDCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="storage/metricIDs"}`, func() float64 { + return float64(m().MetricIDCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="storage/metricName"}`, func() float64 { + return float64(m().MetricNameCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="storage/date_metricID"}`, func() float64 { + return float64(m().DateMetricIDCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="storage/bigIndexBlocks"}`, func() float64 { + return float64(tm().BigIndexBlocksCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="storage/smallIndexBlocks"}`, func() float64 { + return float64(tm().SmallIndexBlocksCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="indexdb/dataBlocks"}`, func() float64 { + return float64(idbm().DataBlocksCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="indexdb/indexBlocks"}`, func() float64 { + return float64(idbm().IndexBlocksCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="indexdb/tagFilters"}`, func() float64 { + return float64(idbm().TagCacheMisses) + }) + metrics.NewGauge(`vm_cache_misses_total{type="storage/regexps"}`, func() float64 { + return float64(storage.RegexpCacheMisses()) + }) + + metrics.NewGauge(`vm_deleted_metrics_total{type="indexdb"}`, func() float64 { + return float64(idbm().DeletedMetricsCount) + }) + + metrics.NewGauge(`vm_cache_collisions_total{type="storage/tsid"}`, func() float64 { + return float64(m().TSIDCacheCollisions) + }) + metrics.NewGauge(`vm_cache_collisions_total{type="storage/metricName"}`, func() float64 { + return float64(m().MetricNameCacheCollisions) + }) + metrics.NewGauge(`vm_cache_collisions_total{type="storage/date_metricID"}`, func() float64 { + return float64(m().DateMetricIDCacheCollisions) + }) +} diff --git a/deployment/docker/Makefile b/deployment/docker/Makefile new file mode 100644 index 000000000..84537632f --- /dev/null +++ b/deployment/docker/Makefile @@ -0,0 +1,42 @@ +DOCKER_NAMESPACE := valyala +BUILDER_IMAGE := local/builder:go1.12.5 +CERTS_IMAGE := local/certs:1.0.2 + +package-certs: + (docker image ls --format '{{.Repository}}:{{.Tag}}' | grep -q '$(CERTS_IMAGE)') \ + || docker build -t $(CERTS_IMAGE) deployment/docker/certs + +package-builder: + (docker image ls --format '{{.Repository}}:{{.Tag}}' | grep -q '$(BUILDER_IMAGE)') \ + || docker build -t $(BUILDER_IMAGE) deployment/docker/builder + +app-via-docker: package-certs package-builder + mkdir -p gocache-for-docker + docker run --rm \ + --user $(shell id -u):$(shell id -g) \ + --mount type=bind,src="$(shell pwd)",dst=/VictoriaMetrics \ + -w /VictoriaMetrics \ + --mount type=bind,src="$(shell pwd)/gocache-for-docker",dst=/gocache \ + --env GOCACHE=/gocache \ + $(BUILDER_IMAGE) \ + go build $(RACE) -mod=vendor -ldflags "-s -w -extldflags '-static' $(GO_BUILDINFO)" -tags 'netgo osusergo' -o bin/$(APP_NAME)-prod $(PKG_PREFIX)/app/$(APP_NAME) + +package-via-docker: + (docker image ls --format '{{.Repository}}:{{.Tag}}' | grep -q '$(DOCKER_NAMESPACE)/$(APP_NAME):$(PKG_TAG)$(RACE)') || (\ + $(MAKE) app-via-docker && \ + docker build -t $(DOCKER_NAMESPACE)/$(APP_NAME):$(PKG_TAG)$(RACE) -f app/$(APP_NAME)/deployment/Dockerfile .) + +publish-via-docker: package-via-docker + docker push $(DOCKER_NAMESPACE)/$(APP_NAME):$(PKG_TAG)$(RACE) + docker tag $(DOCKER_NAMESPACE)/$(APP_NAME):$(PKG_TAG)$(RACE) $(DOCKER_NAMESPACE)/$(APP_NAME):latest + docker push $(DOCKER_NAMESPACE)/$(APP_NAME):latest + +run-via-docker: package-via-docker + docker run -it --rm \ + --user $(shell id -u):$(shell id -g) \ + --net host \ + $(DOCKER_OPTS) \ + $(DOCKER_NAMESPACE)/$(APP_NAME):$(PKG_TAG)$(RACE) $(ARGS) + +remove-docker-images: + docker image ls --format '{{.Repository}}\t{{.ID}}' | grep $(DOCKER_NAMESPACE)/ | grep -v /builder | awk '{print $$2}' | xargs docker image rm -f diff --git a/deployment/docker/builder/Dockerfile b/deployment/docker/builder/Dockerfile new file mode 100644 index 000000000..30ba6d328 --- /dev/null +++ b/deployment/docker/builder/Dockerfile @@ -0,0 +1 @@ +FROM golang:1.12.5 diff --git a/deployment/docker/certs/Dockerfile b/deployment/docker/certs/Dockerfile new file mode 100644 index 000000000..c76c9ec57 --- /dev/null +++ b/deployment/docker/certs/Dockerfile @@ -0,0 +1,3 @@ +# See https://medium.com/on-docker/use-multi-stage-builds-to-inject-ca-certs-ad1e8f01de1b +FROM alpine:3.9 as certs +RUN apk --update add ca-certificates diff --git a/errcheck_excludes.txt b/errcheck_excludes.txt new file mode 100644 index 000000000..f35680dcd --- /dev/null +++ b/errcheck_excludes.txt @@ -0,0 +1,2 @@ +fmt.Fprintf +(net/http.ResponseWriter).Write diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..cc0a71ebb --- /dev/null +++ b/go.mod @@ -0,0 +1,16 @@ +module github.com/VictoriaMetrics/VictoriaMetrics + +require ( + github.com/VictoriaMetrics/fastcache v1.5.0 + github.com/VictoriaMetrics/metrics v1.4.0 + github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 + github.com/golang/snappy v0.0.1 + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/valyala/fastjson v1.4.1 + github.com/valyala/gozstd v1.5.0 + github.com/valyala/histogram v1.0.1 + github.com/valyala/quicktemplate v1.1.1 + golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 +) + +go 1.12 diff --git a/go.sum b/go.sum new file mode 100644 index 000000000..934851e73 --- /dev/null +++ b/go.sum @@ -0,0 +1,48 @@ +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= +github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/VictoriaMetrics/fastcache v1.5.0 h1:z8t2QV/CDXWVJ9vy9yRtGGDoOvk9W2aXQBijbLk0KCc= +github.com/VictoriaMetrics/fastcache v1.5.0/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE= +github.com/VictoriaMetrics/metrics v1.4.0 h1:3+XdciC4E8sywx+0PStXhtIdWxXP2bdJ06Whw0mViQE= +github.com/VictoriaMetrics/metrics v1.4.0/go.mod h1:QZAL5yLaXvhSPeib0ahluGo9VK0HXDZHovKaKlpuWvs= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 h1:pl4eWIqvFe/Kg3zkn7NxevNzILnZYWDCG7qbA1CJik0= +github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/fastjson v1.4.1 h1:hrltpHpIpkaxll8QltMU8c3QZ5+qIiCL8yKqPFJI/yE= +github.com/valyala/fastjson v1.4.1/go.mod h1:nV6MsjxL2IMJQUoHDIrjEI7oLyeqK6aBD7EFWPsvP8o= +github.com/valyala/fastrand v1.0.0 h1:LUKT9aKer2dVQNUi3waewTbKV+7H17kvWFNKs2ObdkI= +github.com/valyala/fastrand v1.0.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ= +github.com/valyala/gozstd v1.5.0 h1:OI7Z2e+GkvmmdRFiJeyuByhT/WMTLuRLa43Z2Tjzenw= +github.com/valyala/gozstd v1.5.0/go.mod h1:oYOS+oJovjw9ewtrwEYb9+ybolEXd6pHyLMuAWN5zts= +github.com/valyala/histogram v1.0.1 h1:FzA7n2Tz/wKRMejgu3PV1vw3htAklTjjuoI6z3d4KDg= +github.com/valyala/histogram v1.0.1/go.mod h1:lQy0xA4wUz2+IUnf97SivorsJIp8FxsnRd6x25q7Mto= +github.com/valyala/quicktemplate v1.1.1 h1:C58y/wN0FMTi2PR0n3onltemfFabany53j7M6SDDB8k= +github.com/valyala/quicktemplate v1.1.1/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 h1:vsphBvatvfbhlb4PO1BYSr9dzugGxJ/SQHoNufZJq1w= +golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/lib/buildinfo/version.go b/lib/buildinfo/version.go new file mode 100644 index 000000000..21b63d461 --- /dev/null +++ b/lib/buildinfo/version.go @@ -0,0 +1,32 @@ +package buildinfo + +import ( + "flag" + "fmt" + "os" +) + +var version = flag.Bool("version", false, "Show VictoriaMetrics version") + +// Version must be set via -ldflags '-X' +var Version string + +// Init must be called after flag.Parse call. +func Init() { + if *version { + printVersion() + os.Exit(0) + } +} + +func init() { + oldUsage := flag.Usage + flag.Usage = func() { + printVersion() + oldUsage() + } +} + +func printVersion() { + fmt.Fprintf(flag.CommandLine.Output(), "%s\n", Version) +} diff --git a/lib/bytesutil/bytebuffer.go b/lib/bytesutil/bytebuffer.go new file mode 100644 index 000000000..6ae31c5b1 --- /dev/null +++ b/lib/bytesutil/bytebuffer.go @@ -0,0 +1,105 @@ +package bytesutil + +import ( + "io" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +var ( + // Verify ByteBuffer implements the given interfaces. + _ io.Writer = &ByteBuffer{} + _ fs.ReadAtCloser = &ByteBuffer{} + + // Verify reader implement filestream.ReadCloser interface. + _ filestream.ReadCloser = &reader{} +) + +// ByteBuffer implements a simple byte buffer. +type ByteBuffer struct { + // B is the underlying byte slice. + B []byte +} + +// Reset resets bb. +func (bb *ByteBuffer) Reset() { + bb.B = bb.B[:0] +} + +// Write appends p to bb. +func (bb *ByteBuffer) Write(p []byte) (int, error) { + bb.B = append(bb.B, p...) + return len(p), nil +} + +// ReadAt reads len(p) bytes starting from the given offset. +func (bb *ByteBuffer) ReadAt(p []byte, offset int64) { + if offset < 0 { + logger.Panicf("BUG: cannot read at negative offset=%d", offset) + } + if offset > int64(len(bb.B)) { + logger.Panicf("BUG: too big offset=%d; cannot exceed len(bb.B)=%d", offset, len(bb.B)) + } + if n := copy(p, bb.B[offset:]); n < len(p) { + logger.Panicf("BUG: EOF occured after reading %d bytes out of %d bytes at offset %d", n, len(p), offset) + } +} + +// MustClose closes bb for subsequent re-use. +func (bb *ByteBuffer) MustClose() { + // Do nothing, since certain code rely on bb reading after MustClose call. +} + +// NewReader returns new reader for the given bb. +func (bb *ByteBuffer) NewReader() filestream.ReadCloser { + return &reader{ + bb: bb, + } +} + +type reader struct { + bb *ByteBuffer + + // readOffset is the offset in bb.B for read. + readOffset int +} + +// Read reads up to len(p) bytes from bb. +func (r *reader) Read(p []byte) (int, error) { + var err error + n := copy(p, r.bb.B[r.readOffset:]) + if n < len(p) { + err = io.EOF + } + r.readOffset += n + return n, err +} + +// MustClose closes bb for subsequent re-use. +func (r *reader) MustClose() { + r.bb = nil + r.readOffset = 0 +} + +// ByteBufferPool is a pool of ByteBuffers. +type ByteBufferPool struct { + p sync.Pool +} + +// Get obtains a ByteBuffer from bbp. +func (bbp *ByteBufferPool) Get() *ByteBuffer { + bbv := bbp.p.Get() + if bbv == nil { + return &ByteBuffer{} + } + return bbv.(*ByteBuffer) +} + +// Put puts bb into bbp. +func (bbp *ByteBufferPool) Put(bb *ByteBuffer) { + bb.Reset() + bbp.p.Put(bb) +} diff --git a/lib/bytesutil/bytebuffer_test.go b/lib/bytesutil/bytebuffer_test.go new file mode 100644 index 000000000..64306e1ea --- /dev/null +++ b/lib/bytesutil/bytebuffer_test.go @@ -0,0 +1,217 @@ +package bytesutil + +import ( + "fmt" + "io" + "testing" + "time" +) + +func TestByteBuffer(t *testing.T) { + var bb ByteBuffer + + n, err := bb.Write(nil) + if err != nil { + t.Fatalf("cannot write nil: %s", err) + } + if n != 0 { + t.Fatalf("unexpected n when writing nil; got %d; want %d", n, 0) + } + if len(bb.B) != 0 { + t.Fatalf("unexpected len(bb.B) after writing nil; got %d; want %d", len(bb.B), 0) + } + + n, err = bb.Write([]byte{}) + if err != nil { + t.Fatalf("cannot write empty slice: %s", err) + } + if n != 0 { + t.Fatalf("unexpected n when writing empty slice; got %d; want %d", n, 0) + } + if len(bb.B) != 0 { + t.Fatalf("unexpected len(bb.B) after writing empty slice; got %d; want %d", len(bb.B), 0) + } + + data1 := []byte("123") + n, err = bb.Write(data1) + if err != nil { + t.Fatalf("cannot write %q: %s", data1, err) + } + if n != len(data1) { + t.Fatalf("unexpected n when writing %q; got %d; want %d", data1, n, len(data1)) + } + if string(bb.B) != string(data1) { + t.Fatalf("unexpected bb.B; got %q; want %q", bb.B, data1) + } + + data2 := []byte("1") + n, err = bb.Write(data2) + if err != nil { + t.Fatalf("cannot write %q: %s", data2, err) + } + if n != len(data2) { + t.Fatalf("unexpected n when writing %q; got %d; want %d", data2, n, len(data2)) + } + if string(bb.B) != string(data1)+string(data2) { + t.Fatalf("unexpected bb.B; got %q; want %q", bb.B, string(data1)+string(data2)) + } + + bb.Reset() + if string(bb.B) != "" { + t.Fatalf("unexpected bb.B after reset; got %q; want %q", bb.B, "") + } + r := bb.NewReader().(*reader) + if r.readOffset != 0 { + t.Fatalf("unexpected r.readOffset after reset; got %d; want %d", r.readOffset, 0) + } +} + +func TestByteBufferRead(t *testing.T) { + var bb ByteBuffer + + n, err := fmt.Fprintf(&bb, "foo, %s, baz", "bar") + if err != nil { + t.Fatalf("unexpected error after fmt.Fprintf: %s", err) + } + if n != len(bb.B) { + t.Fatalf("unexpected len(bb.B); got %d; want %d", len(bb.B), n) + } + if string(bb.B) != "foo, bar, baz" { + t.Fatalf("unexpected bb.B; got %q; want %q", bb.B, "foo, bar, baz") + } + r := bb.NewReader().(*reader) + if r.readOffset != 0 { + t.Fatalf("unexpected r.readOffset; got %d; want %q", r.readOffset, 0) + } + + rCopy := bb.NewReader().(*reader) + + var bb1 ByteBuffer + n1, err := io.Copy(&bb1, r) + if err != nil { + t.Fatalf("unexpected error after io.Copy: %s", err) + } + if int64(r.readOffset) != n1 { + t.Fatalf("unexpected r.readOffset after io.Copy; got %d; want %d", r.readOffset, n1) + } + if n1 != int64(n) { + t.Fatalf("unexpected number of bytes copied; got %d; want %d", n1, n) + } + if string(bb1.B) != "foo, bar, baz" { + t.Fatalf("unexpected bb1.B; got %q; want %q", bb1.B, "foo, bar, baz") + } + + // Make read returns io.EOF + buf := make([]byte, n) + n2, err := r.Read(buf) + if err != io.EOF { + t.Fatalf("unexpected error returned: got %q; want %q", err, io.EOF) + } + if n2 != 0 { + t.Fatalf("unexpected n1 returned; got %d; want %d", n2, 0) + } + + // Read data from rCopy + if rCopy.readOffset != 0 { + t.Fatalf("unexpected rCopy.readOffset; got %d; want %d", rCopy.readOffset, 0) + } + buf = make([]byte, n+13) + n2, err = rCopy.Read(buf) + if err != io.EOF { + t.Fatalf("unexpected error when reading from rCopy: got %q; want %q", err, io.EOF) + } + if n2 != n { + t.Fatalf("unexpected number of bytes read from rCopy; got %d; want %d", n2, n) + } + if string(buf[:n2]) != "foo, bar, baz" { + t.Fatalf("unexpected data read: got %q; want %q", buf[:n2], "foo, bar, baz") + } + if rCopy.readOffset != n2 { + t.Fatalf("unexpected rCopy.readOffset; got %d; want %d", rCopy.readOffset, n2) + } +} + +func TestByteBufferReadAt(t *testing.T) { + testStr := "foobar baz" + + var bb ByteBuffer + bb.B = append(bb.B, testStr...) + + // Try reading at negative offset + p := make([]byte, 1) + func() { + defer func() { + if r := recover(); r == nil { + t.Fatalf("expecting non-nil error when reading at negative offset") + } + }() + bb.ReadAt(p, -1) + }() + + // Try reading past the end of buffer + func() { + defer func() { + if r := recover(); r == nil { + t.Fatalf("expecting non-nil error when reading past the end of buffer") + } + }() + bb.ReadAt(p, int64(len(testStr))+1) + }() + + // Try reading the first byte + n := len(p) + bb.ReadAt(p, 0) + if string(p) != testStr[:n] { + t.Fatalf("unexpected value read: %q; want %q", p, testStr[:n]) + } + + // Try reading the last byte + bb.ReadAt(p, int64(len(testStr))-1) + if string(p) != testStr[len(testStr)-1:] { + t.Fatalf("unexpected value read: %q; want %q", p, testStr[len(testStr)-1:]) + } + + // Try reading non-full p + func() { + defer func() { + if r := recover(); r == nil { + t.Fatalf("expecting non-nil error when reading non-full p") + } + }() + p := make([]byte, 10) + bb.ReadAt(p, int64(len(testStr))-3) + }() + + // Try reading multiple bytes from the middle + p = make([]byte, 3) + bb.ReadAt(p, 2) + if string(p) != testStr[2:2+len(p)] { + t.Fatalf("unexpected value read: %q; want %q", p, testStr[2:2+len(p)]) + } +} + +func TestByteBufferReadAtParallel(t *testing.T) { + ch := make(chan error, 10) + var bb ByteBuffer + bb.B = []byte("foo bar baz adsf adsf dsakjlkjlkj2l34324") + for i := 0; i < cap(ch); i++ { + go func() { + p := make([]byte, 3) + for i := 0; i < len(bb.B)-len(p); i++ { + bb.ReadAt(p, int64(i)) + } + ch <- nil + }() + } + + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(3 * time.Second): + t.Fatalf("timeout") + } + } +} diff --git a/lib/bytesutil/bytesutil.go b/lib/bytesutil/bytesutil.go new file mode 100644 index 000000000..4ceffab14 --- /dev/null +++ b/lib/bytesutil/bytesutil.go @@ -0,0 +1,33 @@ +package bytesutil + +import ( + "reflect" + "unsafe" +) + +// Resize resizes b to n bytes and returns b (which may be newly allocated). +func Resize(b []byte, n int) []byte { + if nn := n - cap(b); nn > 0 { + b = append(b[:cap(b)], make([]byte, nn)...) + } + return b[:n] +} + +// ToUnsafeString converts b to string without memory allocations. +// +// The returned string is valid only until b is reachable and unmodified. +func ToUnsafeString(b []byte) string { + return *(*string)(unsafe.Pointer(&b)) +} + +// ToUnsafeBytes converts s to a byte slice without memory allocations. +// +// The returned byte slice is valid only until s is reachable and unmodified. +func ToUnsafeBytes(s string) []byte { + sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) + var slh reflect.SliceHeader + slh.Data = sh.Data + slh.Len = sh.Len + slh.Cap = sh.Len + return *(*[]byte)(unsafe.Pointer(&slh)) +} diff --git a/lib/bytesutil/bytesutil_test.go b/lib/bytesutil/bytesutil_test.go new file mode 100644 index 000000000..29283a341 --- /dev/null +++ b/lib/bytesutil/bytesutil_test.go @@ -0,0 +1,22 @@ +package bytesutil + +import ( + "testing" +) + +func TestResize(t *testing.T) { + for i := 0; i < 1000; i++ { + b := Resize(nil, i) + if len(b) != i { + t.Fatalf("invalid b size; got %d; expecting %d", len(b), i) + } + b1 := Resize(b, i) + if len(b1) != len(b) || (len(b) > 0 && &b1[0] != &b[0]) { + t.Fatalf("invalid b1; got %x; expecting %x", b1, b) + } + b2 := Resize(b[:0], i) + if len(b2) != len(b) || (len(b) > 0 && &b2[0] != &b[0]) { + t.Fatalf("invalid b2; got %x; expecting %x", b2, b) + } + } +} diff --git a/lib/decimal/decimal.go b/lib/decimal/decimal.go new file mode 100644 index 000000000..11e9eda86 --- /dev/null +++ b/lib/decimal/decimal.go @@ -0,0 +1,353 @@ +package decimal + +import ( + "math" + "sync" +) + +// CalibrateScale calibrates a and b with the corresponding exponents ae, be +// and returns the resulting exponent e. +func CalibrateScale(a []int64, ae int16, b []int64, be int16) (e int16) { + if ae == be { + // Fast path - exponents are equal. + return ae + } + if len(a) == 0 { + return be + } + if len(b) == 0 { + return ae + } + + if ae < be { + a, b = b, a + ae, be = be, ae + } + + upExp := ae - be + downExp := int16(0) + for _, v := range a { + maxUpExp := maxUpExponent(v) + if upExp-maxUpExp > downExp { + downExp = upExp - maxUpExp + } + } + upExp -= downExp + for i, v := range a { + adjExp := upExp + for adjExp > 0 { + v *= 10 + adjExp-- + } + a[i] = v + } + if downExp > 0 { + for i, v := range b { + if v == vInfPos || v == vInfNeg { + // Special case for these values - do not touch them. + continue + } + adjExp := downExp + for adjExp > 0 { + v /= 10 + adjExp-- + } + b[i] = v + } + } + return be + downExp +} + +// ExtendFloat64sCapacity extends dst capacity to hold additionalItems +// and returns the extended dst. +func ExtendFloat64sCapacity(dst []float64, additionalItems int) []float64 { + dstLen := len(dst) + if n := dstLen + additionalItems - cap(dst); n > 0 { + dst = append(dst[:cap(dst)], make([]float64, n)...) + } + return dst[:dstLen] +} + +// ExtendInt64sCapacity extends dst capacity to hold additionalItems +// and returns the extended dst. +func ExtendInt64sCapacity(dst []int64, additionalItems int) []int64 { + dstLen := len(dst) + if n := dstLen + additionalItems - cap(dst); n > 0 { + dst = append(dst[:cap(dst)], make([]int64, n)...) + } + return dst[:dstLen] +} + +// AppendDecimalToFloat converts each item in va to f=v*10^e, appends it +// to dst and returns the resulting dst. +func AppendDecimalToFloat(dst []float64, va []int64, e int16) []float64 { + // Extend dst capacity in order to eliminate memory allocations below. + dst = ExtendFloat64sCapacity(dst, len(va)) + + e10 := math.Pow10(int(e)) + for _, v := range va { + // Manually inline ToFloat here for better performance + var f float64 + if v == vInfPos { + f = infPos + } else if v == vInfNeg { + f = infNeg + } else { + f = float64(v) * e10 + } + dst = append(dst, f) + } + return dst +} + +// AppendFloatToDecimal converts each item in src to v*10^e and appends +// each v to dst returning it as va. +// +// It tries minimizing each item in dst. +func AppendFloatToDecimal(dst []int64, src []float64) (va []int64, e int16) { + if len(src) == 0 { + return dst, 0 + } + + // Extend dst capacity in order to eliminate memory allocations below. + dst = ExtendInt64sCapacity(dst, len(src)) + + vaev := vaeBufPool.Get() + if vaev == nil { + vaev = &vaeBuf{ + va: make([]int64, len(src)), + ea: make([]int16, len(src)), + } + } + vae := vaev.(*vaeBuf) + vae.va = vae.va[:0] + vae.ea = vae.ea[:0] + + // Determine the minimum exponent across all src items. + v, exp := FromFloat(src[0]) + vae.va = append(vae.va, v) + vae.ea = append(vae.ea, exp) + minExp := exp + for _, f := range src[1:] { + v, exp := FromFloat(f) + vae.va = append(vae.va, v) + vae.ea = append(vae.ea, exp) + if exp < minExp { + minExp = exp + } + } + + // Determine whether all the src items may be upscaled to minExp. + // If not, adjust minExp accordingly. + downExp := int16(0) + for i, v := range vae.va { + exp := vae.ea[i] + upExp := exp - minExp + maxUpExp := maxUpExponent(v) + if upExp-maxUpExp > downExp { + downExp = upExp - maxUpExp + } + } + minExp += downExp + + // Scale each item in src to minExp and append it to dst. + for i, v := range vae.va { + exp := vae.ea[i] + adjExp := exp - minExp + for adjExp > 0 { + v *= 10 + adjExp-- + } + for adjExp < 0 { + v /= 10 + adjExp++ + } + dst = append(dst, v) + } + + vaeBufPool.Put(vae) + + return dst, minExp +} + +type vaeBuf struct { + va []int64 + ea []int16 +} + +var vaeBufPool sync.Pool + +func maxUpExponent(v int64) int16 { + if v == 0 { + // Any exponent allowed. + return 1024 + } + if v < 0 { + v = -v + } + if v < 0 { + return 0 + } + + maxMultiplier := ((1 << 63) - 1) / uint64(v) + switch { + case maxMultiplier >= 1e19: + return 19 + case maxMultiplier >= 1e18: + return 18 + case maxMultiplier >= 1e17: + return 17 + case maxMultiplier >= 1e16: + return 16 + case maxMultiplier >= 1e15: + return 15 + case maxMultiplier >= 1e14: + return 14 + case maxMultiplier >= 1e13: + return 13 + case maxMultiplier >= 1e12: + return 12 + case maxMultiplier >= 1e11: + return 11 + case maxMultiplier >= 1e10: + return 10 + case maxMultiplier >= 1e9: + return 9 + case maxMultiplier >= 1e8: + return 8 + case maxMultiplier >= 1e7: + return 7 + case maxMultiplier >= 1e6: + return 6 + case maxMultiplier >= 1e5: + return 5 + case maxMultiplier >= 1e4: + return 4 + case maxMultiplier >= 1e3: + return 3 + case maxMultiplier >= 1e2: + return 2 + case maxMultiplier >= 1e1: + return 1 + default: + return 0 + } +} + +// ToFloat returns f=v*10^e. +func ToFloat(v int64, e int16) float64 { + if v == vInfPos { + return infPos + } + if v == vInfNeg { + return infNeg + } + return float64(v) * math.Pow10(int(e)) +} + +const ( + vInfPos = 1<<63 - 1 + vInfNeg = -1 << 63 + + vMax = 1<<63 - 3 + vMin = -1<<63 + 1 +) + +var ( + infPos = math.Inf(1) + infNeg = math.Inf(-1) +) + +// FromFloat converts f to v*10^e. +// +// It tries minimizing v. +// For instance, for f = -1.234 it returns v = -1234, e = -3. +// +// FromFloat doesn't work properly with NaN values, so don't pass them here. +func FromFloat(f float64) (v int64, e int16) { + if math.IsInf(f, 0) { + // Special case for Inf + if math.IsInf(f, 1) { + return vInfPos, 0 + } + return vInfNeg, 0 + } + + minus := false + if f < 0 { + f = -f + minus = true + } + if f == 0 { + // Special case for 0.0 and -0.0 + return 0, 0 + } + v, e = positiveFloatToDecimal(f) + if minus { + v = -v + } + if v == 0 { + e = 0 + } else if v > vMax { + v = vMax + } else if v < vMin { + v = vMin + } + return v, e +} + +func positiveFloatToDecimal(f float64) (int64, int16) { + var scale int16 + v := int64(f) + if f == float64(v) { + // Fast path for integers. + u := uint64(v) + if u%10 != 0 { + return v, 0 + } + // Minimize v by converting trailing zeros to scale. + u /= 10 + scale++ + for u != 0 && u%10 == 0 { + u /= 10 + scale++ + } + return int64(u), scale + } + + // Slow path for floating point numbers. + if f > 1e6 || f < 1e-6 { + // Normalize f, so it is in the small range suitable + // for the next loop. + _, exp := math.Frexp(f) + scale = int16(float64(exp) * math.Ln2 / math.Ln10) + f *= math.Pow10(-int(scale)) + } + + // Multiply f by 100 until the fractional part becomes + // too small comparing to integer part. + for f < conversionPrecision { + x, frac := math.Modf(f) + if frac*conversionPrecision < x { + f = x + break + } + if (1-frac)*conversionPrecision < x { + f = x + 1 + break + } + f *= 100 + scale -= 2 + } + u := uint64(f) + if u%10 != 0 { + return int64(u), scale + } + + // Minimize u by converting trailing zero to scale. + u /= 10 + scale++ + return int64(u), scale +} + +const conversionPrecision = 1e12 diff --git a/lib/decimal/decimal_test.go b/lib/decimal/decimal_test.go new file mode 100644 index 000000000..c58ca44b5 --- /dev/null +++ b/lib/decimal/decimal_test.go @@ -0,0 +1,317 @@ +package decimal + +import ( + "math" + "math/rand" + "reflect" + "testing" +) + +func TestAppendDecimalToFloat(t *testing.T) { + testAppendDecimalToFloat(t, []int64{}, 0, nil) + testAppendDecimalToFloat(t, []int64{0}, 0, []float64{0}) + testAppendDecimalToFloat(t, []int64{0}, 10, []float64{0}) + testAppendDecimalToFloat(t, []int64{0}, -10, []float64{0}) + testAppendDecimalToFloat(t, []int64{-1, -10, 0, 100}, 2, []float64{-1e2, -1e3, 0, 1e4}) + testAppendDecimalToFloat(t, []int64{-1, -10, 0, 100}, -2, []float64{-1e-2, -1e-1, 0, 1}) +} + +func testAppendDecimalToFloat(t *testing.T, va []int64, e int16, fExpected []float64) { + f := AppendDecimalToFloat(nil, va, e) + if !reflect.DeepEqual(f, fExpected) { + t.Fatalf("unexpected f for va=%d, e=%d: got\n%v; expecting\n%v", va, e, f, fExpected) + } + + prefix := []float64{1, 2, 3, 4} + f = AppendDecimalToFloat(prefix, va, e) + if !reflect.DeepEqual(f[:len(prefix)], prefix) { + t.Fatalf("unexpected prefix for va=%d, e=%d; got\n%v; expecting\n%v", va, e, f[:len(prefix)], prefix) + } + if fExpected == nil { + fExpected = []float64{} + } + if !reflect.DeepEqual(f[len(prefix):], fExpected) { + t.Fatalf("unexpected prefixed f for va=%d, e=%d: got\n%v; expecting\n%v", va, e, f[len(prefix):], fExpected) + } +} + +func TestCalibrateScale(t *testing.T) { + testCalibrateScale(t, []int64{}, []int64{}, 0, 0, []int64{}, []int64{}, 0) + testCalibrateScale(t, []int64{0}, []int64{0}, 0, 0, []int64{0}, []int64{0}, 0) + testCalibrateScale(t, []int64{0}, []int64{1}, 0, 0, []int64{0}, []int64{1}, 0) + testCalibrateScale(t, []int64{1, 0, 2}, []int64{5, -3}, 0, 1, []int64{1, 0, 2}, []int64{50, -30}, 0) + testCalibrateScale(t, []int64{-1, 2}, []int64{5, 6, 3}, 2, -1, []int64{-1000, 2000}, []int64{5, 6, 3}, -1) + testCalibrateScale(t, []int64{123, -456, 94}, []int64{-9, 4, -3, 45}, -3, -3, []int64{123, -456, 94}, []int64{-9, 4, -3, 45}, -3) + testCalibrateScale(t, []int64{1e18, 1, 0}, []int64{3, 456}, 0, -2, []int64{1e18, 1, 0}, []int64{0, 4}, 0) + testCalibrateScale(t, []int64{12345, 678}, []int64{12, -1e17, -3}, -3, 0, []int64{123, 6}, []int64{120, -1e18, -30}, -1) + testCalibrateScale(t, []int64{1, 2}, nil, 12, 34, []int64{1, 2}, nil, 12) + testCalibrateScale(t, nil, []int64{3, 1}, 12, 34, nil, []int64{3, 1}, 34) + testCalibrateScale(t, []int64{923}, []int64{2, 3}, 100, -100, []int64{923e15}, []int64{0, 0}, 85) + testCalibrateScale(t, []int64{923}, []int64{2, 3}, -100, 100, []int64{0}, []int64{2e18, 3e18}, 82) + testCalibrateScale(t, []int64{123, 456, 789, 135}, []int64{}, -12, -10, []int64{123, 456, 789, 135}, []int64{}, -12) + testCalibrateScale(t, []int64{123, 456, 789, 135}, []int64{}, -10, -12, []int64{123, 456, 789, 135}, []int64{}, -10) + + testCalibrateScale(t, []int64{vInfPos, 1200}, []int64{500, 100}, 0, 0, []int64{vInfPos, 1200}, []int64{500, 100}, 0) + testCalibrateScale(t, []int64{vInfPos, 1200}, []int64{500, 100}, 0, 2, []int64{vInfPos, 1200}, []int64{500e2, 100e2}, 0) + testCalibrateScale(t, []int64{vInfPos, 1200}, []int64{500, 100}, 0, -2, []int64{vInfPos, 1200}, []int64{5, 1}, 0) + testCalibrateScale(t, []int64{vInfPos, 1200}, []int64{3500, 100}, 0, -3, []int64{vInfPos, 1200}, []int64{3, 0}, 0) + testCalibrateScale(t, []int64{vInfPos, 1200}, []int64{35, 1}, 0, 40, []int64{vInfPos, 0}, []int64{35e17, 1e17}, 23) + testCalibrateScale(t, []int64{vInfPos, 1200}, []int64{35, 1}, 40, 0, []int64{vInfPos, 1200}, []int64{0, 0}, 40) + testCalibrateScale(t, []int64{vInfNeg, 1200}, []int64{35, 1}, 35, -5, []int64{vInfNeg, 1200}, []int64{0, 0}, 35) + testCalibrateScale(t, []int64{vMax, vMin, 123}, []int64{100}, 0, 3, []int64{vMax, vMin, 123}, []int64{100e3}, 0) + testCalibrateScale(t, []int64{vMax, vMin, 123}, []int64{100}, 3, 0, []int64{vMax, vMin, 123}, []int64{0}, 3) + testCalibrateScale(t, []int64{vMax, vMin, 123}, []int64{100}, 0, 30, []int64{92233, -92233, 0}, []int64{100e16}, 14) +} + +func testCalibrateScale(t *testing.T, a, b []int64, ae, be int16, aExpected, bExpected []int64, eExpected int16) { + t.Helper() + + if a == nil { + a = []int64{} + } + if b == nil { + b = []int64{} + } + if aExpected == nil { + aExpected = []int64{} + } + if bExpected == nil { + bExpected = []int64{} + } + + aCopy := append([]int64{}, a...) + bCopy := append([]int64{}, b...) + e := CalibrateScale(aCopy, ae, bCopy, be) + if e != eExpected { + t.Fatalf("unexpected e for a=%d, b=%d, ae=%d, be=%d; got %d; expecting %d", a, b, ae, be, e, eExpected) + } + if !reflect.DeepEqual(aCopy, aExpected) { + t.Fatalf("unexpected a for b=%d, ae=%d, be=%d; got\n%d; expecting\n%d", b, ae, be, aCopy, aExpected) + } + if !reflect.DeepEqual(bCopy, bExpected) { + t.Fatalf("unexpected b for a=%d, ae=%d, be=%d; got\n%d; expecting\n%d", a, ae, be, bCopy, bExpected) + } + + // Try reverse args. + aCopy = append([]int64{}, a...) + bCopy = append([]int64{}, b...) + e = CalibrateScale(bCopy, be, aCopy, ae) + if e != eExpected { + t.Fatalf("revers: unexpected e for a=%d, b=%d, ae=%d, be=%d; got %d; expecting %d", a, b, ae, be, e, eExpected) + } + if !reflect.DeepEqual(aCopy, aExpected) { + t.Fatalf("reverse: unexpected a for b=%d, ae=%d, be=%d; got\n%d; expecting\n%d", b, ae, be, aCopy, aExpected) + } + if !reflect.DeepEqual(bCopy, bExpected) { + t.Fatalf("reverse: unexpected b for a=%d, ae=%d, be=%d; got\n%d; expecting\n%d", a, ae, be, bCopy, bExpected) + } +} + +func TestMaxUpExponent(t *testing.T) { + testMaxUpExponent(t, 0, 1024) + testMaxUpExponent(t, -1<<63, 0) + testMaxUpExponent(t, (-1<<63)+1, 0) + testMaxUpExponent(t, (1<<63)-1, 0) + testMaxUpExponent(t, 1, 18) + testMaxUpExponent(t, 12, 17) + testMaxUpExponent(t, 123, 16) + testMaxUpExponent(t, 1234, 15) + testMaxUpExponent(t, 12345, 14) + testMaxUpExponent(t, 123456, 13) + testMaxUpExponent(t, 1234567, 12) + testMaxUpExponent(t, 12345678, 11) + testMaxUpExponent(t, 123456789, 10) + testMaxUpExponent(t, 1234567890, 9) + testMaxUpExponent(t, 12345678901, 8) + testMaxUpExponent(t, 123456789012, 7) + testMaxUpExponent(t, 1234567890123, 6) + testMaxUpExponent(t, 12345678901234, 5) + testMaxUpExponent(t, 123456789012345, 4) + testMaxUpExponent(t, 1234567890123456, 3) + testMaxUpExponent(t, 12345678901234567, 2) + testMaxUpExponent(t, 123456789012345678, 1) + testMaxUpExponent(t, 1234567890123456789, 0) + testMaxUpExponent(t, 923456789012345678, 0) + testMaxUpExponent(t, 92345678901234567, 1) + testMaxUpExponent(t, 9234567890123456, 2) + testMaxUpExponent(t, 923456789012345, 3) + testMaxUpExponent(t, 92345678901234, 4) + testMaxUpExponent(t, 9234567890123, 5) + testMaxUpExponent(t, 923456789012, 6) + testMaxUpExponent(t, 92345678901, 7) + testMaxUpExponent(t, 9234567890, 8) + testMaxUpExponent(t, 923456789, 9) + testMaxUpExponent(t, 92345678, 10) + testMaxUpExponent(t, 9234567, 11) + testMaxUpExponent(t, 923456, 12) + testMaxUpExponent(t, 92345, 13) + testMaxUpExponent(t, 9234, 14) + testMaxUpExponent(t, 923, 15) + testMaxUpExponent(t, 92, 17) + testMaxUpExponent(t, 9, 18) +} + +func testMaxUpExponent(t *testing.T, v int64, eExpected int16) { + t.Helper() + + e := maxUpExponent(v) + if e != eExpected { + t.Fatalf("unexpected e for v=%d; got %d; epxecting %d", v, e, eExpected) + } + e = maxUpExponent(-v) + if e != eExpected { + t.Fatalf("unexpected e for v=%d; got %d; expecting %d", -v, e, eExpected) + } +} + +func TestAppendFloatToDecimal(t *testing.T) { + // no-op + testAppendFloatToDecimal(t, []float64{}, nil, 0) + testAppendFloatToDecimal(t, []float64{0}, []int64{0}, 0) + testAppendFloatToDecimal(t, []float64{0, 1, -1, 12345678, -123456789}, []int64{0, 1, -1, 12345678, -123456789}, 0) + + // upExp + testAppendFloatToDecimal(t, []float64{-24, 0, 4.123, 0.3}, []int64{-24000, 0, 4123, 300}, -3) + testAppendFloatToDecimal(t, []float64{0, 10.23456789, 1e2, 1e-3, 1e-4}, []int64{0, 1023456789, 1e10, 1e5, 1e4}, -8) + + // downExp + testAppendFloatToDecimal(t, []float64{3e17, 7e-2, 5e-7, 45, 7e-1}, []int64{3e18, 0, 0, 450, 7}, -1) + testAppendFloatToDecimal(t, []float64{3e18, 1, 0.1, 13}, []int64{3e18, 1, 0, 13}, 0) +} + +func testAppendFloatToDecimal(t *testing.T, fa []float64, daExpected []int64, eExpected int16) { + t.Helper() + + da, e := AppendFloatToDecimal(nil, fa) + if e != eExpected { + t.Fatalf("unexpected e for fa=%f; got %d; expecting %d", fa, e, eExpected) + } + if !reflect.DeepEqual(da, daExpected) { + t.Fatalf("unexpected da for fa=%f; got\n%d; expecting\n%d", fa, da, daExpected) + } + + daPrefix := []int64{1, 2, 3} + da, e = AppendFloatToDecimal(daPrefix, fa) + if e != eExpected { + t.Fatalf("unexpected e for fa=%f; got %d; expecting %d", fa, e, eExpected) + } + if !reflect.DeepEqual(da[:len(daPrefix)], daPrefix) { + t.Fatalf("unexpected daPrefix for fa=%f; got\n%d; expecting\n%d", fa, da[:len(daPrefix)], daPrefix) + } + if daExpected == nil { + daExpected = []int64{} + } + if !reflect.DeepEqual(da[len(daPrefix):], daExpected) { + t.Fatalf("unexpected da for fa=%f; got\n%d; expecting\n%d", fa, da[len(daPrefix):], daExpected) + } +} + +func TestFloatToDecimal(t *testing.T) { + testFloatToDecimal(t, 0, 0, 0) + testFloatToDecimal(t, 1, 1, 0) + testFloatToDecimal(t, -1, -1, 0) + testFloatToDecimal(t, 0.9, 9, -1) + testFloatToDecimal(t, 0.99, 99, -2) + testFloatToDecimal(t, 9, 9, 0) + testFloatToDecimal(t, 99, 99, 0) + testFloatToDecimal(t, 20, 2, 1) + testFloatToDecimal(t, 100, 1, 2) + testFloatToDecimal(t, 3000, 3, 3) + + testFloatToDecimal(t, 0.123, 123, -3) + testFloatToDecimal(t, -0.123, -123, -3) + testFloatToDecimal(t, 1.2345, 12345, -4) + testFloatToDecimal(t, -1.2345, -12345, -4) + testFloatToDecimal(t, 12000, 12, 3) + testFloatToDecimal(t, -12000, -12, 3) + testFloatToDecimal(t, 1e-30, 1, -30) + testFloatToDecimal(t, -1e-30, -1, -30) + testFloatToDecimal(t, 1e-260, 1, -260) + testFloatToDecimal(t, -1e-260, -1, -260) + testFloatToDecimal(t, 321e260, 321, 260) + testFloatToDecimal(t, -321e260, -321, 260) + testFloatToDecimal(t, 1234567890123, 1234567890123, 0) + testFloatToDecimal(t, -1234567890123, -1234567890123, 0) + testFloatToDecimal(t, 123e5, 123, 5) + testFloatToDecimal(t, 15e18, 15, 18) + + testFloatToDecimal(t, math.Inf(1), vInfPos, 0) + testFloatToDecimal(t, math.Inf(-1), vInfNeg, 0) + testFloatToDecimal(t, 1<<63-1, 922337203685, 7) + testFloatToDecimal(t, -1<<63, -922337203685, 7) +} + +func testFloatToDecimal(t *testing.T, f float64, vExpected int64, eExpected int16) { + t.Helper() + + v, e := FromFloat(f) + if v != vExpected { + t.Fatalf("unexpected v for f=%e; got %d; expecting %d", f, v, vExpected) + } + if e != eExpected { + t.Fatalf("unexpected e for f=%e; got %d; expecting %d", f, e, eExpected) + } +} + +func TestFloatToDecimalRoundtrip(t *testing.T) { + testFloatToDecimalRoundtrip(t, 0) + testFloatToDecimalRoundtrip(t, 1) + testFloatToDecimalRoundtrip(t, 0.123) + testFloatToDecimalRoundtrip(t, 1.2345) + testFloatToDecimalRoundtrip(t, 12000) + testFloatToDecimalRoundtrip(t, 1e-30) + testFloatToDecimalRoundtrip(t, 1e-260) + testFloatToDecimalRoundtrip(t, 321e260) + testFloatToDecimalRoundtrip(t, 1234567890123) + testFloatToDecimalRoundtrip(t, 12.34567890125) + testFloatToDecimalRoundtrip(t, 15e18) + + testFloatToDecimalRoundtrip(t, math.Inf(1)) + testFloatToDecimalRoundtrip(t, math.Inf(-1)) + testFloatToDecimalRoundtrip(t, 1<<63-1) + testFloatToDecimalRoundtrip(t, -1<<63) + + for i := 0; i < 1e4; i++ { + f := rand.NormFloat64() + testFloatToDecimalRoundtrip(t, f) + testFloatToDecimalRoundtrip(t, f*1e-6) + testFloatToDecimalRoundtrip(t, f*1e6) + + testFloatToDecimalRoundtrip(t, roundFloat(f, 20)) + testFloatToDecimalRoundtrip(t, roundFloat(f, 10)) + testFloatToDecimalRoundtrip(t, roundFloat(f, 5)) + testFloatToDecimalRoundtrip(t, roundFloat(f, 0)) + testFloatToDecimalRoundtrip(t, roundFloat(f, -5)) + testFloatToDecimalRoundtrip(t, roundFloat(f, -10)) + testFloatToDecimalRoundtrip(t, roundFloat(f, -20)) + } +} + +func roundFloat(f float64, exp int) float64 { + f *= math.Pow10(-exp) + return math.Trunc(f) * math.Pow10(exp) +} + +func testFloatToDecimalRoundtrip(t *testing.T, f float64) { + t.Helper() + + v, e := FromFloat(f) + fNew := ToFloat(v, e) + if !equalFloat(fNew, f) { + t.Fatalf("unexpected fNew for v=%d, e=%d; got %g; expecting %g", v, e, fNew, f) + } + + v, e = FromFloat(-f) + fNew = ToFloat(v, e) + if !equalFloat(fNew, -f) { + t.Fatalf("unexepcted fNew for v=%d, e=%d; got %g; expecting %g", v, e, fNew, -f) + } +} + +func equalFloat(f1, f2 float64) bool { + if math.IsInf(f1, 0) { + return math.IsInf(f1, 1) == math.IsInf(f2, 1) || math.IsInf(f1, -1) == math.IsInf(f2, -1) + } + eps := math.Abs(f1 - f2) + return eps == 0 || eps*conversionPrecision < math.Abs(f1)+math.Abs(f2) +} diff --git a/lib/decimal/decimal_timing_test.go b/lib/decimal/decimal_timing_test.go new file mode 100644 index 000000000..1989e7300 --- /dev/null +++ b/lib/decimal/decimal_timing_test.go @@ -0,0 +1,86 @@ +package decimal + +import ( + "fmt" + "math/rand" + "sync/atomic" + "testing" +) + +func BenchmarkAppendDecimalToFloat(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(testVA))) + b.RunParallel(func(pb *testing.PB) { + var fa []float64 + for pb.Next() { + fa = AppendDecimalToFloat(fa[:0], testVA, 0) + atomic.AddUint64(&Sink, uint64(len(fa))) + } + }) +} + +func BenchmarkAppendFloatToDecimal(b *testing.B) { + b.Run("RealFloat", func(b *testing.B) { + benchmarkAppendFloatToDecimal(b, testFAReal) + }) + b.Run("Integers", func(b *testing.B) { + benchmarkAppendFloatToDecimal(b, testFAInteger) + }) +} + +func benchmarkAppendFloatToDecimal(b *testing.B, fa []float64) { + b.ReportAllocs() + b.SetBytes(int64(len(fa))) + b.RunParallel(func(pb *testing.PB) { + var da []int64 + var e int16 + var sink uint64 + for pb.Next() { + da, e = AppendFloatToDecimal(da[:0], fa) + sink += uint64(len(da)) + sink += uint64(e) + } + atomic.AddUint64(&Sink, sink) + }) +} + +var testFAReal = func() []float64 { + fa := make([]float64, 8*1024) + for i := 0; i < len(fa); i++ { + fa[i] = rand.NormFloat64() * 1e6 + } + return fa +}() + +var testFAInteger = func() []float64 { + fa := make([]float64, 8*1024) + for i := 0; i < len(fa); i++ { + fa[i] = float64(int(rand.NormFloat64() * 1e6)) + } + return fa +}() + +var testVA = func() []int64 { + va, _ := AppendFloatToDecimal(nil, testFAReal) + return va +}() + +func BenchmarkFromFloat(b *testing.B) { + for _, f := range []float64{0, 1234, 12334345, 12343.4344, 123.45678901e12, 12.3454435e30} { + b.Run(fmt.Sprintf("%g", f), func(b *testing.B) { + b.ReportAllocs() + b.SetBytes(1) + b.RunParallel(func(pb *testing.PB) { + var sink uint64 + for pb.Next() { + v, e := FromFloat(f) + sink += uint64(v) + sink += uint64(e) + } + atomic.AddUint64(&Sink, sink) + }) + }) + } +} + +var Sink uint64 diff --git a/lib/encoding/compress.go b/lib/encoding/compress.go new file mode 100644 index 000000000..6d3a050c3 --- /dev/null +++ b/lib/encoding/compress.go @@ -0,0 +1,27 @@ +package encoding + +import ( + "github.com/valyala/gozstd" +) + +// CompressZSTD compresses src, appends the result to dst and returns +// the appended dst. +// +// src must be non-empty. +func CompressZSTD(dst, src []byte) []byte { + return gozstd.CompressLevel(dst, src, 5) +} + +// CompressZSTDLevel appends compressed src to dst and returns +// the appended dst. +// +// The given compressLevel is used for the compression. +func CompressZSTDLevel(dst, src []byte, compressLevel int) []byte { + return gozstd.CompressLevel(dst, src, compressLevel) +} + +// DecompressZSTD decompresses src, appends the result to dst and returns +// the appended dst. +func DecompressZSTD(dst, src []byte) ([]byte, error) { + return gozstd.Decompress(dst, src) +} diff --git a/lib/encoding/compress_test.go b/lib/encoding/compress_test.go new file mode 100644 index 000000000..48224ea72 --- /dev/null +++ b/lib/encoding/compress_test.go @@ -0,0 +1,48 @@ +package encoding + +import ( + "math/rand" + "testing" +) + +func TestCompressDecompressZSTD(t *testing.T) { + testCompressDecompressZSTD(t, []byte("a")) + testCompressDecompressZSTD(t, []byte("foobarbaz")) + + var b []byte + for i := 0; i < 64*1024; i++ { + b = append(b, byte(rand.Int31n(256))) + } + testCompressDecompressZSTD(t, b) +} + +func testCompressDecompressZSTD(t *testing.T, b []byte) { + bc := CompressZSTD(nil, b) + bNew, err := DecompressZSTD(nil, bc) + if err != nil { + t.Fatalf("unexpected error when decompressing b=%x from bc=%x: %s", b, bc, err) + } + if string(bNew) != string(b) { + t.Fatalf("invalid bNew; got\n%x; expecting\n%x", bNew, b) + } + + prefix := []byte{1, 2, 33} + bcNew := CompressZSTD(prefix, b) + if string(bcNew[:len(prefix)]) != string(prefix) { + t.Fatalf("invalid prefix for b=%x; got\n%x; expecting\n%x", b, bcNew[:len(prefix)], prefix) + } + if string(bcNew[len(prefix):]) != string(bc) { + t.Fatalf("invalid prefixed bcNew for b=%x; got\n%x; expecting\n%x", b, bcNew[len(prefix):], bc) + } + + bNew, err = DecompressZSTD(prefix, bc) + if err != nil { + t.Fatalf("unexpected error when decompressing b=%x from bc=%x with prefix: %s", b, bc, err) + } + if string(bNew[:len(prefix)]) != string(prefix) { + t.Fatalf("invalid bNew prefix when decompressing bc=%x; got\n%x; expecting\n%x", bc, bNew[:len(prefix)], prefix) + } + if string(bNew[len(prefix):]) != string(b) { + t.Fatalf("invalid prefixed bNew; got\n%x; expecting\n%x", bNew[len(prefix):], b) + } +} diff --git a/lib/encoding/encoding.go b/lib/encoding/encoding.go new file mode 100644 index 000000000..5cb9347f4 --- /dev/null +++ b/lib/encoding/encoding.go @@ -0,0 +1,350 @@ +package encoding + +import ( + "fmt" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// minCompressibleBlockSize is the minimum block size in bytes for trying compression. +// +// There is no sense in compressing smaller blocks. +const minCompressibleBlockSize = 128 + +// MarshalType is the type used for the marshaling. +type MarshalType byte + +const ( + // MarshalTypeZSTDNearestDelta2 is used for marshaling counter + // timeseries. + MarshalTypeZSTDNearestDelta2 = MarshalType(1) + + // MarshalTypeDeltaConst is used for marshaling constantly changed + // time series with constant delta. + MarshalTypeDeltaConst = MarshalType(2) + + // MarshalTypeConst is used for marshaling time series containing only + // a single constant. + MarshalTypeConst = MarshalType(3) + + // MarshalTypeZSTDNearestDelta is used for marshaling gauge timeseries. + MarshalTypeZSTDNearestDelta = MarshalType(4) + + // MarshalTypeNearestDelta2 is used instead of MarshalTypeZSTDNearestDelta2 + // if compression doesn't help. + MarshalTypeNearestDelta2 = MarshalType(5) + + // MarshalTypeNearestDelta is used instead of MarshalTypeZSTDNearestDelta + // if compression doesn't help. + MarshalTypeNearestDelta = MarshalType(6) +) + +// CheckMarshalType verifies whether the mt is valid. +func CheckMarshalType(mt MarshalType) error { + if mt < 0 || mt > 6 { + return fmt.Errorf("MarshalType should be in range [0..6]; got %d", mt) + } + return nil +} + +// CheckPrecisionBits makes sure precisionBits is in the range [1..64]. +func CheckPrecisionBits(precisionBits uint8) error { + if precisionBits < 1 || precisionBits > 64 { + return fmt.Errorf("precisionBits must be in the range [1...64]; got %d", precisionBits) + } + return nil +} + +// MarshalTimestamps marshals timestamps, appends the marshaled result +// to dst and returns the dst. +// +// timestamps must contain non-decreasing values. +// +// precisionBits must be in the range [1...64], where 1 means 50% precision, +// while 64 means 100% precision, i.e. lossless encoding. +func MarshalTimestamps(dst []byte, timestamps []int64, precisionBits uint8) (result []byte, mt MarshalType, firstTimestamp int64) { + return marshalInt64Array(dst, timestamps, precisionBits) +} + +// UnmarshalTimestamps unmarshals timestamps from src, appends them to dst +// and returns the resulting dst. +// +// firstTimestamp must be the timestamp returned from MarshalTimestamps. +func UnmarshalTimestamps(dst []int64, src []byte, mt MarshalType, firstTimestamp int64, itemsCount int) ([]int64, error) { + dst, err := unmarshalInt64Array(dst, src, mt, firstTimestamp, itemsCount) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal %d timestamps from len(src)=%d bytes: %s", itemsCount, len(src), err) + } + return dst, nil +} + +// MarshalValues marshals values, appends the marshaled result to dst +// and returns the dst. +// +// precisionBits must be in the range [1...64], where 1 means 50% precision, +// while 64 means 100% precision, i.e. lossless encoding. +func MarshalValues(dst []byte, values []int64, precisionBits uint8) (result []byte, mt MarshalType, firstValue int64) { + return marshalInt64Array(dst, values, precisionBits) +} + +// UnmarshalValues unmarshals values from src, appends them to dst and returns +// the resulting dst. +// +// firstValue must be the value returned from MarshalValues. +func UnmarshalValues(dst []int64, src []byte, mt MarshalType, firstValue int64, itemsCount int) ([]int64, error) { + dst, err := unmarshalInt64Array(dst, src, mt, firstValue, itemsCount) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal %d values from len(src)=%d bytes: %s", itemsCount, len(src), err) + } + return dst, nil +} + +func marshalInt64Array(dst []byte, a []int64, precisionBits uint8) (result []byte, mt MarshalType, firstValue int64) { + if len(a) == 0 { + logger.Panicf("BUG: a must contain at least one item") + } + if isConst(a) { + firstValue = a[0] + return dst, MarshalTypeConst, firstValue + } + if isDeltaConst(a) { + firstValue = a[0] + dst = MarshalVarInt64(dst, a[1]-a[0]) + return dst, MarshalTypeDeltaConst, firstValue + } + + bb := bbPool.Get() + if isGauge(a) { + // Guage values are better compressed with delta encoding. + mt = MarshalTypeZSTDNearestDelta + pb := precisionBits + if pb < 6 { + // Increase precision bits for gauges, since they suffer more + // from low precision bits comparing to counters. + pb += 2 + } + bb.B, firstValue = marshalInt64NearestDelta(bb.B[:0], a, pb) + } else { + // Non-gauge values, i.e. counters are better compressed with delta2 encoding. + mt = MarshalTypeZSTDNearestDelta2 + bb.B, firstValue = marshalInt64NearestDelta2(bb.B[:0], a, precisionBits) + } + + // Try compressing the result. + dstOrig := dst + if len(bb.B) >= minCompressibleBlockSize { + compressLevel := getCompressLevel(len(a)) + dst = CompressZSTDLevel(dst, bb.B, compressLevel) + } + if len(bb.B) < minCompressibleBlockSize || float64(len(dst)-len(dstOrig)) > 0.9*float64(len(bb.B)) { + // Ineffective compression. Store plain data. + switch mt { + case MarshalTypeZSTDNearestDelta2: + mt = MarshalTypeNearestDelta2 + case MarshalTypeZSTDNearestDelta: + mt = MarshalTypeNearestDelta + default: + logger.Panicf("BUG: unexpected mt=%d", mt) + } + dst = append(dstOrig, bb.B...) + } + bbPool.Put(bb) + + return dst, mt, firstValue +} + +func unmarshalInt64Array(dst []int64, src []byte, mt MarshalType, firstValue int64, itemsCount int) ([]int64, error) { + // Extend dst capacity in order to eliminate memory allocations below. + dst = decimal.ExtendInt64sCapacity(dst, itemsCount) + + var err error + switch mt { + case MarshalTypeZSTDNearestDelta: + bb := bbPool.Get() + bb.B, err = DecompressZSTD(bb.B[:0], src) + if err != nil { + return nil, fmt.Errorf("cannot decompress zstd data of size %d: %s", len(src), err) + } + dst, err = unmarshalInt64NearestDelta(dst, bb.B, firstValue, itemsCount) + bbPool.Put(bb) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal nearest delta data after zstd decompression: %s", err) + } + return dst, nil + case MarshalTypeZSTDNearestDelta2: + bb := bbPool.Get() + bb.B, err = DecompressZSTD(bb.B[:0], src) + if err != nil { + return nil, fmt.Errorf("cannot decompress zstd data of size %d: %s", len(src), err) + } + dst, err = unmarshalInt64NearestDelta2(dst, bb.B, firstValue, itemsCount) + bbPool.Put(bb) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal nearest delta2 data after zstd decompression: %s", err) + } + return dst, nil + case MarshalTypeNearestDelta: + dst, err = unmarshalInt64NearestDelta(dst, src, firstValue, itemsCount) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal nearest delta data: %s", err) + } + return dst, nil + case MarshalTypeNearestDelta2: + dst, err = unmarshalInt64NearestDelta2(dst, src, firstValue, itemsCount) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal nearest delta2 data: %s", err) + } + return dst, nil + case MarshalTypeConst: + if len(src) > 0 { + return nil, fmt.Errorf("unexpected data left in const encoding: %d bytes", len(src)) + } + for itemsCount > 0 { + dst = append(dst, firstValue) + itemsCount-- + } + return dst, nil + case MarshalTypeDeltaConst: + v := firstValue + tail, d, err := UnmarshalVarInt64(src) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal delta value for delta const: %s", err) + } + if len(tail) > 0 { + return nil, fmt.Errorf("unexpected trailing data after delta const (d=%d): %d bytes", d, len(tail)) + } + for itemsCount > 0 { + dst = append(dst, v) + itemsCount-- + v += d + } + return dst, nil + default: + return nil, fmt.Errorf("unknown MarshalType=%d", mt) + } +} + +var bbPool bytesutil.ByteBufferPool + +// EnsureNonDecreasingSequence makes sure the first item in a is vMin, the last +// item in a is vMax and all the items in a are non-decreasing. +// +// If this isn't the case the a is fixed accordingly. +func EnsureNonDecreasingSequence(a []int64, vMin, vMax int64) { + if vMax < vMin { + logger.Panicf("BUG: vMax cannot be smaller than vMin; got %d vs %d", vMax, vMin) + } + if len(a) == 0 { + return + } + if a[0] != vMin { + a[0] = vMin + } + vPrev := a[0] + aa := a[1:] + for i, v := range aa { + if v < vPrev { + aa[i] = vPrev + v = vPrev + } + vPrev = v + } + i := len(a) - 1 + if a[i] != vMax { + a[i] = vMax + i-- + for i >= 0 && a[i] > vMax { + a[i] = vMax + i-- + } + } +} + +// isConst returns true if a contains only equal values. +func isConst(a []int64) bool { + if len(a) == 0 { + return false + } + v1 := a[0] + for _, v := range a { + if v != v1 { + return false + } + } + return true +} + +// isDeltaConst returns true if a contains counter with constant delta. +func isDeltaConst(a []int64) bool { + if len(a) < 2 { + return false + } + d1 := a[1] - a[0] + prev := a[1] + for _, next := range a[2:] { + if next-prev != d1 { + return false + } + prev = next + } + return true +} + +// isGauge returns true if a contains gauge values, +// i.e. arbitrary changing values. +// +// It is OK if a few gauges aren't detected (i.e. detected as counters), +// since misdetected counters as gauges are much worse condition. +func isGauge(a []int64) bool { + // Check all the items in a, since a part of items may lead + // to incorrect gauge detection. + + if len(a) < 2 { + return false + } + + extremes := 0 + plus := a[0] <= a[1] + v1 := a[1] + for _, v2 := range a[2:] { + if plus { + if v2 < v1 { + extremes++ + plus = false + } + } else { + if v2 > v1 { + extremes++ + plus = true + } + } + v1 = v2 + } + if extremes <= 2 { + // Probably counter reset. + return false + } + + // A few extremes may indicate counter resets. + // Let it be a gauge if extremes exceed len(a)/32, + // otherwise assume counter reset. + return extremes > (len(a) >> 5) +} + +func getCompressLevel(itemsCount int) int { + if itemsCount <= 1<<6 { + return 1 + } + if itemsCount <= 1<<8 { + return 2 + } + if itemsCount <= 1<<10 { + return 3 + } + if itemsCount <= 1<<12 { + return 4 + } + return 5 +} diff --git a/lib/encoding/encoding_test.go b/lib/encoding/encoding_test.go new file mode 100644 index 000000000..836ed8b85 --- /dev/null +++ b/lib/encoding/encoding_test.go @@ -0,0 +1,290 @@ +package encoding + +import ( + "math/rand" + "reflect" + "testing" +) + +func TestIsConst(t *testing.T) { + f := func(a []int64, okExpected bool) { + t.Helper() + ok := isConst(a) + if ok != okExpected { + t.Fatalf("unexpected isConst for a=%d; got %v; want %v", a, ok, okExpected) + } + } + f([]int64{}, false) + f([]int64{1}, true) + f([]int64{1, 2}, false) + f([]int64{1, 1}, true) + f([]int64{1, 1, 1}, true) + f([]int64{1, 1, 2}, false) +} + +func TestIsDeltaConst(t *testing.T) { + f := func(a []int64, okExpected bool) { + t.Helper() + ok := isDeltaConst(a) + if ok != okExpected { + t.Fatalf("unexpected isDeltaConst for a=%d; got %v; want %v", a, ok, okExpected) + } + } + f([]int64{}, false) + f([]int64{1}, false) + f([]int64{1, 2}, true) + f([]int64{1, 2, 3}, true) + f([]int64{3, 2, 1}, true) + f([]int64{3, 2, 1, 0, -1, -2}, true) + f([]int64{3, 2, 1, 0, -1, -2, 2}, false) + f([]int64{1, 1}, true) + f([]int64{1, 2, 1}, false) + f([]int64{1, 2, 4}, false) +} + +func TestIsGauge(t *testing.T) { + testIsGauge(t, []int64{}, false) + testIsGauge(t, []int64{0}, false) + testIsGauge(t, []int64{1, 2}, false) + testIsGauge(t, []int64{0, 1, 2, 3, 4, 5}, false) + testIsGauge(t, []int64{0, -1, -2, -3, -4}, false) + testIsGauge(t, []int64{0, 0, 0, 0, 0, 0, 0}, false) + testIsGauge(t, []int64{1, 1, 1, 1, 1}, false) + testIsGauge(t, []int64{1, 1, 2, 2, 2, 2}, false) + testIsGauge(t, []int64{1, 5, 2, 3}, false) // a single counter reset + testIsGauge(t, []int64{1, 5, 2, 3, 2}, true) + testIsGauge(t, []int64{-1, -5, -2, -3}, false) // a single counter reset + testIsGauge(t, []int64{-1, -5, -2, -3, -2}, true) +} + +func testIsGauge(t *testing.T, a []int64, okExpected bool) { + t.Helper() + + ok := isGauge(a) + if ok != okExpected { + t.Fatalf("unexpected result for isGauge(%d); got %v; expecting %v", a, ok, okExpected) + } +} + +func TestEnsureNonDecreasingSequence(t *testing.T) { + testEnsureNonDecreasingSequence(t, []int64{}, -1234, -34, []int64{}) + testEnsureNonDecreasingSequence(t, []int64{123}, -1234, -1234, []int64{-1234}) + testEnsureNonDecreasingSequence(t, []int64{123}, -1234, 345, []int64{345}) + testEnsureNonDecreasingSequence(t, []int64{-23, -14}, -23, -14, []int64{-23, -14}) + testEnsureNonDecreasingSequence(t, []int64{-23, -14}, -25, 0, []int64{-25, 0}) + testEnsureNonDecreasingSequence(t, []int64{0, -1, 10, 5, 6, 7}, 2, 8, []int64{2, 2, 8, 8, 8, 8}) + testEnsureNonDecreasingSequence(t, []int64{0, -1, 10, 5, 6, 7}, -2, 8, []int64{-2, -1, 8, 8, 8, 8}) + testEnsureNonDecreasingSequence(t, []int64{0, -1, 10, 5, 6, 7}, -2, 12, []int64{-2, -1, 10, 10, 10, 12}) + testEnsureNonDecreasingSequence(t, []int64{1, 2, 1, 3, 4, 5}, 1, 5, []int64{1, 2, 2, 3, 4, 5}) +} + +func testEnsureNonDecreasingSequence(t *testing.T, a []int64, vMin, vMax int64, aExpected []int64) { + t.Helper() + + EnsureNonDecreasingSequence(a, vMin, vMax) + if !reflect.DeepEqual(a, aExpected) { + t.Fatalf("unexpected a; got\n%d; expecting\n%d", a, aExpected) + } +} + +func TestMarshalUnmarshalInt64Array(t *testing.T) { + testMarshalUnmarshalInt64Array(t, []int64{1, 20, 234}, 4, MarshalTypeNearestDelta2) + testMarshalUnmarshalInt64Array(t, []int64{1, 20, -2345, 678934, 342}, 4, MarshalTypeNearestDelta) + testMarshalUnmarshalInt64Array(t, []int64{1, 20, 2345, 6789, 12342}, 4, MarshalTypeNearestDelta2) + + // Constant encoding + testMarshalUnmarshalInt64Array(t, []int64{1}, 4, MarshalTypeConst) + testMarshalUnmarshalInt64Array(t, []int64{1, 2}, 4, MarshalTypeDeltaConst) + testMarshalUnmarshalInt64Array(t, []int64{-1, 0, 1, 2, 3, 4, 5}, 4, MarshalTypeDeltaConst) + testMarshalUnmarshalInt64Array(t, []int64{-10, -1, 8, 17, 26}, 4, MarshalTypeDeltaConst) + testMarshalUnmarshalInt64Array(t, []int64{0, 0, 0, 0, 0, 0}, 4, MarshalTypeConst) + testMarshalUnmarshalInt64Array(t, []int64{100, 100, 100, 100}, 4, MarshalTypeConst) + + var va []int64 + var v int64 + + // Verify nearest delta encoding. + va = va[:0] + v = 0 + for i := 0; i < 8*1024; i++ { + v += int64(rand.NormFloat64() * 1e6) + va = append(va, v) + } + for precisionBits := uint8(1); precisionBits < 23; precisionBits++ { + testMarshalUnmarshalInt64Array(t, va, precisionBits, MarshalTypeZSTDNearestDelta) + } + for precisionBits := uint8(23); precisionBits < 65; precisionBits++ { + testMarshalUnmarshalInt64Array(t, va, precisionBits, MarshalTypeNearestDelta) + } + + // Verify nearest delta2 encoding. + va = va[:0] + v = 0 + for i := 0; i < 8*1024; i++ { + v += 30e6 + int64(rand.NormFloat64()*1e6) + va = append(va, v) + } + for precisionBits := uint8(1); precisionBits < 24; precisionBits++ { + testMarshalUnmarshalInt64Array(t, va, precisionBits, MarshalTypeZSTDNearestDelta2) + } + for precisionBits := uint8(24); precisionBits < 65; precisionBits++ { + testMarshalUnmarshalInt64Array(t, va, precisionBits, MarshalTypeNearestDelta2) + } + + // Verify nearest delta encoding. + va = va[:0] + v = 1000 + for i := 0; i < 6; i++ { + v += int64(rand.NormFloat64() * 100) + va = append(va, v) + } + for precisionBits := uint8(1); precisionBits < 65; precisionBits++ { + testMarshalUnmarshalInt64Array(t, va, precisionBits, MarshalTypeNearestDelta) + } + + // Verify nearest delta2 encoding. + va = va[:0] + v = 0 + for i := 0; i < 6; i++ { + v += 3000 + int64(rand.NormFloat64()*100) + va = append(va, v) + } + for precisionBits := uint8(5); precisionBits < 65; precisionBits++ { + testMarshalUnmarshalInt64Array(t, va, precisionBits, MarshalTypeNearestDelta2) + } +} + +func testMarshalUnmarshalInt64Array(t *testing.T, va []int64, precisionBits uint8, mtExpected MarshalType) { + t.Helper() + + b, mt, firstValue := marshalInt64Array(nil, va, precisionBits) + if mt != mtExpected { + t.Fatalf("unexpected MarshalType for va=%d, precisionBits=%d: got %d; expecting %d", va, precisionBits, mt, mtExpected) + } + vaNew, err := unmarshalInt64Array(nil, b, mt, firstValue, len(va)) + if err != nil { + t.Fatalf("unexpected error when unmarshaling va=%d, precisionBits=%d: %s", va, precisionBits, err) + } + if vaNew == nil && va != nil { + vaNew = []int64{} + } + switch mt { + case MarshalTypeZSTDNearestDelta, MarshalTypeZSTDNearestDelta2, + MarshalTypeNearestDelta, MarshalTypeNearestDelta2: + if err = checkPrecisionBits(va, vaNew, precisionBits); err != nil { + t.Fatalf("too low precision for vaNew: %s", err) + } + default: + if !reflect.DeepEqual(va, vaNew) { + t.Fatalf("unexpected vaNew for va=%d, precisionBits=%d; got\n%d; expecting\n%d", va, precisionBits, vaNew, va) + } + } + + bPrefix := []byte{1, 2, 3} + bNew, mtNew, firstValueNew := marshalInt64Array(bPrefix, va, precisionBits) + if firstValueNew != firstValue { + t.Fatalf("unexpected firstValue for prefixed va=%d, precisionBits=%d; got %d; want %d", va, precisionBits, firstValueNew, firstValue) + } + if string(bNew[:len(bPrefix)]) != string(bPrefix) { + t.Fatalf("unexpected prefix for va=%d, precisionBits=%d; got\n%d; expecting\n%d", va, precisionBits, bNew[:len(bPrefix)], bPrefix) + } + if string(bNew[len(bPrefix):]) != string(b) { + t.Fatalf("unexpected b for prefixed va=%d, precisionBits=%d; got\n%d; expecting\n%d", va, precisionBits, bNew[len(bPrefix):], b) + } + if mtNew != mt { + t.Fatalf("unexpected mt for prefixed va=%d, precisionBits=%d; got %d; expecting %d", va, precisionBits, mtNew, mt) + } + + vaPrefix := []int64{4, 5, 6, 8} + vaNew, err = unmarshalInt64Array(vaPrefix, b, mt, firstValue, len(va)) + if err != nil { + t.Fatalf("unexpected error when unmarshaling prefixed va=%d, precisionBits=%d: %s", va, precisionBits, err) + } + if !reflect.DeepEqual(vaNew[:len(vaPrefix)], vaPrefix) { + t.Fatalf("unexpected prefix for va=%d, precisionBits=%d; got\n%d; expecting\n%d", va, precisionBits, vaNew[:len(vaPrefix)], vaPrefix) + } + if va == nil { + va = []int64{} + } + switch mt { + case MarshalTypeZSTDNearestDelta, MarshalTypeZSTDNearestDelta2, + MarshalTypeNearestDelta, MarshalTypeNearestDelta2: + if err = checkPrecisionBits(vaNew[len(vaPrefix):], va, precisionBits); err != nil { + t.Fatalf("too low precision for prefixed vaNew: %s", err) + } + default: + if !reflect.DeepEqual(vaNew[len(vaPrefix):], va) { + t.Fatalf("unexpected prefixed vaNew for va=%d, precisionBits=%d; got\n%d; expecting\n%d", va, precisionBits, vaNew[len(vaPrefix):], va) + } + } +} + +func TestMarshalUnmarshalTimestamps(t *testing.T) { + const precisionBits = 3 + + var timestamps []int64 + v := int64(0) + for i := 0; i < 8*1024; i++ { + v += 30e3 * int64(rand.NormFloat64()*5e2) + timestamps = append(timestamps, v) + } + result, mt, firstTimestamp := MarshalTimestamps(nil, timestamps, precisionBits) + timestamps2, err := UnmarshalTimestamps(nil, result, mt, firstTimestamp, len(timestamps)) + if err != nil { + t.Fatalf("cannot unmarshal timestamps: %s", err) + } + if err := checkPrecisionBits(timestamps, timestamps2, precisionBits); err != nil { + t.Fatalf("too low precision for timestamps: %s", err) + } +} + +func TestMarshalUnmarshalValues(t *testing.T) { + const precisionBits = 3 + + var values []int64 + v := int64(0) + for i := 0; i < 8*1024; i++ { + v += int64(rand.NormFloat64() * 1e2) + values = append(values, v) + } + result, mt, firstValue := MarshalValues(nil, values, precisionBits) + values2, err := UnmarshalValues(nil, result, mt, firstValue, len(values)) + if err != nil { + t.Fatalf("cannot unmarshal values: %s", err) + } + if err := checkPrecisionBits(values, values2, precisionBits); err != nil { + t.Fatalf("too low precision for values: %s", err) + } +} + +func TestMarshalInt64ArraySize(t *testing.T) { + var va []int64 + v := int64(rand.Float64() * 1e9) + for i := 0; i < 8*1024; i++ { + va = append(va, v) + v += 30e3 + int64(rand.NormFloat64()*1e3) + } + + testMarshalInt64ArraySize(t, va, 1, 500, 1300) + testMarshalInt64ArraySize(t, va, 2, 600, 1400) + testMarshalInt64ArraySize(t, va, 3, 900, 1800) + testMarshalInt64ArraySize(t, va, 4, 1300, 2100) + testMarshalInt64ArraySize(t, va, 5, 2000, 3200) + testMarshalInt64ArraySize(t, va, 6, 3000, 4800) + testMarshalInt64ArraySize(t, va, 7, 4000, 6400) + testMarshalInt64ArraySize(t, va, 8, 6000, 8000) + testMarshalInt64ArraySize(t, va, 9, 7000, 8800) + testMarshalInt64ArraySize(t, va, 10, 8000, 10000) +} + +func testMarshalInt64ArraySize(t *testing.T, va []int64, precisionBits uint8, minSizeExpected, maxSizeExpected int) { + t.Helper() + + b, _, _ := marshalInt64Array(nil, va, precisionBits) + if len(b) > maxSizeExpected { + t.Fatalf("too big size for marshaled %d items with precisionBits %d: got %d; expecting %d", len(va), precisionBits, len(b), maxSizeExpected) + } + if len(b) < minSizeExpected { + t.Fatalf("too small size for marshaled %d items with precisionBits %d: got %d; epxecting %d", len(va), precisionBits, len(b), minSizeExpected) + } +} diff --git a/lib/encoding/encoding_timing_test.go b/lib/encoding/encoding_timing_test.go new file mode 100644 index 000000000..23e89ff7e --- /dev/null +++ b/lib/encoding/encoding_timing_test.go @@ -0,0 +1,240 @@ +package encoding + +import ( + "fmt" + "math/rand" + "sync/atomic" + "testing" +) + +func BenchmarkMarshalGaugeArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchGaugeArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + var mt MarshalType + for pb.Next() { + dst, mt, _ = marshalInt64Array(dst[:0], benchGaugeArray, 4) + if mt != MarshalTypeZSTDNearestDelta { + panic(fmt.Errorf("unexpected marshal type; got %d; expecting %d", mt, MarshalTypeZSTDNearestDelta)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var Sink uint64 + +func BenchmarkUnmarshalGaugeArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchGaugeArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64Array(dst[:0], benchMarshaledGaugeArray, MarshalTypeZSTDNearestDelta, 0, len(benchGaugeArray)) + if err != nil { + panic(fmt.Errorf("cannot unmarshal gauge array: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchGaugeArray = func() []int64 { + a := make([]int64, 8*1024) + v := int64(0) + for i := 0; i < len(a); i++ { + v += int64(rand.NormFloat64() * 100) + a[i] = v + } + return a +}() + +var benchMarshaledGaugeArray = func() []byte { + b, _, _ := marshalInt64Array(nil, benchGaugeArray, 4) + return b +}() + +func BenchmarkMarshalDeltaConstArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchDeltaConstArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + var mt MarshalType + for pb.Next() { + dst, mt, _ = marshalInt64Array(dst[:0], benchDeltaConstArray, 4) + if mt != MarshalTypeDeltaConst { + panic(fmt.Errorf("unexpected marshal type; got %d; expecting %d", mt, MarshalTypeDeltaConst)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +func BenchmarkUnmarshalDeltaConstArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchDeltaConstArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64Array(dst[:0], benchMarshaledDeltaConstArray, MarshalTypeDeltaConst, 0, len(benchDeltaConstArray)) + if err != nil { + panic(fmt.Errorf("cannot unmarshal delta const array: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchDeltaConstArray = func() []int64 { + a := make([]int64, 8*1024) + v := int64(0) + for i := 0; i < len(a); i++ { + v += 12345 + a[i] = v + } + return a +}() + +var benchMarshaledDeltaConstArray = func() []byte { + b, _, _ := marshalInt64Array(nil, benchDeltaConstArray, 4) + return b +}() + +func BenchmarkMarshalConstArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchConstArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + var mt MarshalType + for pb.Next() { + dst, mt, _ = marshalInt64Array(dst[:0], benchConstArray, 4) + if mt != MarshalTypeConst { + panic(fmt.Errorf("unexpected marshal type; got %d; expecting %d", mt, MarshalTypeConst)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +func BenchmarkUnmarshalConstArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchConstArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64Array(dst[:0], benchMarshaledConstArray, MarshalTypeConst, 0, len(benchConstArray)) + if err != nil { + panic(fmt.Errorf("cannot unmarshal const array: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchConstArray = func() []int64 { + a := make([]int64, 8*1024) + for i := 0; i < len(a); i++ { + a[i] = 1234567890 + } + return a +}() + +var benchMarshaledConstArray = func() []byte { + b, _, _ := marshalInt64Array(nil, benchConstArray, 4) + return b +}() + +func BenchmarkMarshalZeroConstArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchZeroConstArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + var mt MarshalType + for pb.Next() { + dst, mt, _ = marshalInt64Array(dst[:0], benchZeroConstArray, 4) + if mt != MarshalTypeConst { + panic(fmt.Errorf("unexpected marshal type; got %d; expecting %d", mt, MarshalTypeConst)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +func BenchmarkUnmarshalZeroConstArray(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchZeroConstArray))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64Array(dst[:0], benchMarshaledZeroConstArray, MarshalTypeConst, 0, len(benchZeroConstArray)) + if err != nil { + panic(fmt.Errorf("cannot unmarshal zero const array: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchZeroConstArray = make([]int64, 8*1024) + +var benchMarshaledZeroConstArray = func() []byte { + b, _, _ := marshalInt64Array(nil, benchZeroConstArray, 4) + return b +}() + +func BenchmarkMarshalInt64Array(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchInt64Array))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + var mt MarshalType + for pb.Next() { + dst, mt, _ = marshalInt64Array(dst[:0], benchInt64Array, 4) + if mt != benchMarshalType { + panic(fmt.Errorf("unexpected marshal type; got %d; expecting %d", mt, benchMarshalType)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +func BenchmarkUnmarshalInt64Array(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchInt64Array))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64Array(dst[:0], benchMarshaledInt64Array, benchMarshalType, 0, len(benchInt64Array)) + if err != nil { + panic(fmt.Errorf("cannot unmarshal int64 array: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchMarshaledInt64Array = func() []byte { + b, _, _ := marshalInt64Array(nil, benchInt64Array, 4) + return b +}() + +var benchMarshalType = func() MarshalType { + _, mt, _ := marshalInt64Array(nil, benchInt64Array, 4) + return mt +}() + +var benchInt64Array = func() []int64 { + var a []int64 + var v int64 + for i := 0; i < 8*1024; i++ { + v += 30e3 + int64(rand.NormFloat64()*1e3) + a = append(a, v) + } + return a +}() diff --git a/lib/encoding/int.go b/lib/encoding/int.go new file mode 100644 index 000000000..016329bd0 --- /dev/null +++ b/lib/encoding/int.go @@ -0,0 +1,296 @@ +package encoding + +import ( + "fmt" + "sync" +) + +// MarshalUint16 appends marshaled v to dst and returns the result. +func MarshalUint16(dst []byte, u uint16) []byte { + return append(dst, byte(u>>8), byte(u)) +} + +// UnmarshalUint16 returns unmarshaled uint32 from src. +func UnmarshalUint16(src []byte) uint16 { + _ = src[1] + return uint16(src[0])<<8 | uint16(src[1]) +} + +// MarshalUint32 appends marshaled v to dst and returns the result. +func MarshalUint32(dst []byte, u uint32) []byte { + return append(dst, byte(u>>24), byte(u>>16), byte(u>>8), byte(u)) +} + +// UnmarshalUint32 returns unmarshaled uint32 from src. +func UnmarshalUint32(src []byte) uint32 { + _ = src[3] + return uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) +} + +// MarshalUint64 appends marshaled v to dst and returns the result. +func MarshalUint64(dst []byte, u uint64) []byte { + return append(dst, byte(u>>56), byte(u>>48), byte(u>>40), byte(u>>32), byte(u>>24), byte(u>>16), byte(u>>8), byte(u)) +} + +// UnmarshalUint64 returns unmarshaled uint64 from src. +func UnmarshalUint64(src []byte) uint64 { + _ = src[7] + return uint64(src[0])<<56 | uint64(src[1])<<48 | uint64(src[2])<<40 | uint64(src[3])<<32 | uint64(src[4])<<24 | uint64(src[5])<<16 | uint64(src[6])<<8 | uint64(src[7]) +} + +// MarshalInt16 appends marshaled v to dst and returns the result. +func MarshalInt16(dst []byte, v int16) []byte { + // Such encoding for negative v must improve compression. + v = (v << 1) ^ (v >> 15) // zig-zag encoding without branching. + u := uint16(v) + return append(dst, byte(u>>8), byte(u)) +} + +// UnmarshalInt16 returns unmarshaled int16 from src. +func UnmarshalInt16(src []byte) int16 { + _ = src[1] + u := uint16(src[0])<<8 | uint16(src[1]) + v := int16(u>>1) ^ (int16(u<<15) >> 15) // zig-zag decoding without branching. + return v +} + +// MarshalInt64 appends marshaled v to dst and returns the result. +func MarshalInt64(dst []byte, v int64) []byte { + // Such encoding for negative v must improve compression. + v = (v << 1) ^ (v >> 63) // zig-zag encoding without branching. + u := uint64(v) + return append(dst, byte(u>>56), byte(u>>48), byte(u>>40), byte(u>>32), byte(u>>24), byte(u>>16), byte(u>>8), byte(u)) +} + +// UnmarshalInt64 returns unmarshaled int64 from src. +func UnmarshalInt64(src []byte) int64 { + _ = src[7] + u := uint64(src[0])<<56 | uint64(src[1])<<48 | uint64(src[2])<<40 | uint64(src[3])<<32 | uint64(src[4])<<24 | uint64(src[5])<<16 | uint64(src[6])<<8 | uint64(src[7]) + v := int64(u>>1) ^ (int64(u<<63) >> 63) // zig-zag decoding without branching. + return v +} + +// MarshalVarInt64 appends marshalsed v to dst and returns the result. +func MarshalVarInt64(dst []byte, v int64) []byte { + var tmp [1]int64 + tmp[0] = v + return MarshalVarInt64s(dst, tmp[:]) +} + +// MarshalVarInt64s appends marshaled vs to dst and returns the result. +func MarshalVarInt64s(dst []byte, vs []int64) []byte { + for _, v := range vs { + if v < 0x40 && v > -0x40 { + // Fast path + c := int8(v) + v := (c << 1) ^ (c >> 7) // zig-zag encoding without branching. + dst = append(dst, byte(v)) + continue + } + + v = (v << 1) ^ (v >> 63) // zig-zag encoding without branching. + u := uint64(v) + for u > 0x7f { + dst = append(dst, 0x80|byte(u)) + u >>= 7 + } + dst = append(dst, byte(u)) + } + return dst +} + +// UnmarshalVarInt64 returns unmarshaled int64 from src and returns +// the remaining tail from src. +func UnmarshalVarInt64(src []byte) ([]byte, int64, error) { + var tmp [1]int64 + tail, err := UnmarshalVarInt64s(tmp[:], src) + return tail, tmp[0], err +} + +// UnmarshalVarInt64s unmarshals len(dst) int64 values from src to dst +// and returns the remaining tail from src. +func UnmarshalVarInt64s(dst []int64, src []byte) ([]byte, error) { + idx := uint(0) + for i := range dst { + if idx >= uint(len(src)) { + return nil, fmt.Errorf("cannot unmarshal varint from empty data") + } + c := src[idx] + idx++ + if c < 0x80 { + // Fast path + v := int8(c>>1) ^ (int8(c<<7) >> 7) // zig-zag decoding without branching. + dst[i] = int64(v) + continue + } + + // Slow path + u := uint64(c & 0x7f) + startIdx := idx - 1 + shift := uint8(0) + for c >= 0x80 { + if idx >= uint(len(src)) { + return nil, fmt.Errorf("unexpected end of encoded varint at byte %d; src=%x", idx-startIdx, src[startIdx:]) + } + if idx-startIdx > 9 { + return src[idx:], fmt.Errorf("too long encoded varint; the maximum allowed length is 10 bytes; got %d bytes; src=%x", + (idx-startIdx)+1, src[startIdx:]) + } + c = src[idx] + idx++ + shift += 7 + u |= uint64(c&0x7f) << shift + } + v := int64(u>>1) ^ (int64(u<<63) >> 63) // zig-zag decoding without branching. + dst[i] = v + } + return src[idx:], nil +} + +// MarshalVarUint64 appends marshaled u to dst and returns the result. +func MarshalVarUint64(dst []byte, u uint64) []byte { + var tmp [1]uint64 + tmp[0] = u + return MarshalVarUint64s(dst, tmp[:]) +} + +// MarshalVarUint64s appends marshaled us to dst and returns the result. +func MarshalVarUint64s(dst []byte, us []uint64) []byte { + for _, u := range us { + if u < 0x80 { + // Fast path + dst = append(dst, byte(u)) + continue + } + for u > 0x7f { + dst = append(dst, 0x80|byte(u)) + u >>= 7 + } + dst = append(dst, byte(u)) + } + return dst +} + +// UnmarshalVarUint64 returns unmarshaled uint64 from src and returns +// the remaining tail from src. +func UnmarshalVarUint64(src []byte) ([]byte, uint64, error) { + var tmp [1]uint64 + tail, err := UnmarshalVarUint64s(tmp[:], src) + return tail, tmp[0], err +} + +// UnmarshalVarUint64s unmarshals len(dst) uint64 values from src to dst +// and returns the remaining tail from src. +func UnmarshalVarUint64s(dst []uint64, src []byte) ([]byte, error) { + idx := uint(0) + for i := range dst { + if idx >= uint(len(src)) { + return nil, fmt.Errorf("cannot unmarshal varuint from empty data") + } + c := src[idx] + idx++ + if c < 0x80 { + // Fast path + dst[i] = uint64(c) + continue + } + + // Slow path + u := uint64(c & 0x7f) + startIdx := idx - 1 + shift := uint8(0) + for c >= 0x80 { + if idx >= uint(len(src)) { + return nil, fmt.Errorf("unexpected end of encoded varint at byte %d; src=%x", idx-startIdx, src[startIdx:]) + } + if idx-startIdx > 9 { + return src[idx:], fmt.Errorf("too long encoded varint; the maximum allowed length is 10 bytes; got %d bytes; src=%x", + (idx-startIdx)+1, src[startIdx:]) + } + c = src[idx] + idx++ + shift += 7 + u |= uint64(c&0x7f) << shift + } + dst[i] = u + } + return src[idx:], nil +} + +// MarshalBytes appends marshaled b to dst and returns the result. +func MarshalBytes(dst, b []byte) []byte { + dst = MarshalVarUint64(dst, uint64(len(b))) + dst = append(dst, b...) + return dst +} + +// UnmarshalBytes returns unmarshaled bytes from src. +func UnmarshalBytes(src []byte) ([]byte, []byte, error) { + tail, n, err := UnmarshalVarUint64(src) + if err != nil { + return nil, nil, fmt.Errorf("cannot unmarshal string size: %d", err) + } + src = tail + if uint64(len(src)) < n { + return nil, nil, fmt.Errorf("src is too short for reading string with size %d; len(src)=%d", n, len(src)) + } + return src[n:], src[:n], nil +} + +// GetInt64s returns an int64 slice with the given size. +// The slice contents isn't initialized - it may contain garbage. +func GetInt64s(size int) *Int64s { + v := int64sPool.Get() + if v == nil { + return &Int64s{ + A: make([]int64, size), + } + } + is := v.(*Int64s) + if n := size - cap(is.A); n > 0 { + is.A = append(is.A[:cap(is.A)], make([]int64, n)...) + } + is.A = is.A[:size] + return is +} + +// PutInt64s returns is to the pool. +func PutInt64s(is *Int64s) { + int64sPool.Put(is) +} + +// Int64s holds an int64 slice +type Int64s struct { + A []int64 +} + +var int64sPool sync.Pool + +// GetUint64s returns an uint64 slice with the given size. +// The slice contents isn't initialized - it may contain garbage. +func GetUint64s(size int) *Uint64s { + v := uint64sPool.Get() + if v == nil { + return &Uint64s{ + A: make([]uint64, size), + } + } + is := v.(*Uint64s) + if n := size - cap(is.A); n > 0 { + is.A = append(is.A[:cap(is.A)], make([]uint64, n)...) + } + is.A = is.A[:size] + return is +} + +// PutUint64s returns is to the pool. +func PutUint64s(is *Uint64s) { + uint64sPool.Put(is) +} + +// Uint64s holds an uint64 slice +type Uint64s struct { + A []uint64 +} + +var uint64sPool sync.Pool diff --git a/lib/encoding/int_test.go b/lib/encoding/int_test.go new file mode 100644 index 000000000..91ae75dd3 --- /dev/null +++ b/lib/encoding/int_test.go @@ -0,0 +1,315 @@ +package encoding + +import ( + "bytes" + "fmt" + "testing" +) + +func TestMarshalUnmarshalUint16(t *testing.T) { + testMarshalUnmarshalUint16(t, 0) + testMarshalUnmarshalUint16(t, 1) + testMarshalUnmarshalUint16(t, (1<<16)-1) + testMarshalUnmarshalUint16(t, (1<<15)+1) + testMarshalUnmarshalUint16(t, (1<<15)-1) + testMarshalUnmarshalUint16(t, 1<<15) + + for i := uint16(0); i < 1e4; i++ { + testMarshalUnmarshalUint16(t, i) + } +} + +func testMarshalUnmarshalUint16(t *testing.T, u uint16) { + t.Helper() + + b := MarshalUint16(nil, u) + if len(b) != 2 { + t.Fatalf("unexpected b length: %d; expecting %d", len(b), 2) + } + uNew := UnmarshalUint16(b) + if uNew != u { + t.Fatalf("unexpected uNew from b=%x; got %d; expecting %d", b, uNew, u) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalUint16(prefix, u) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for u=%d; got\n%x; expecting\n%x", u, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for u=%d; got\n%x; expecting\n%x", u, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalUint32(t *testing.T) { + testMarshalUnmarshalUint32(t, 0) + testMarshalUnmarshalUint32(t, 1) + testMarshalUnmarshalUint32(t, (1<<32)-1) + testMarshalUnmarshalUint32(t, (1<<31)+1) + testMarshalUnmarshalUint32(t, (1<<31)-1) + testMarshalUnmarshalUint32(t, 1<<31) + + for i := uint32(0); i < 1e4; i++ { + testMarshalUnmarshalUint32(t, i) + } +} + +func testMarshalUnmarshalUint32(t *testing.T, u uint32) { + t.Helper() + + b := MarshalUint32(nil, u) + if len(b) != 4 { + t.Fatalf("unexpected b length: %d; expecting %d", len(b), 4) + } + uNew := UnmarshalUint32(b) + if uNew != u { + t.Fatalf("unexpected uNew from b=%x; got %d; expecting %d", b, uNew, u) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalUint32(prefix, u) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for u=%d; got\n%x; expecting\n%x", u, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for u=%d; got\n%x; expecting\n%x", u, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalUint64(t *testing.T) { + testMarshalUnmarshalUint64(t, 0) + testMarshalUnmarshalUint64(t, 1) + testMarshalUnmarshalUint64(t, (1<<64)-1) + testMarshalUnmarshalUint64(t, (1<<63)+1) + testMarshalUnmarshalUint64(t, (1<<63)-1) + testMarshalUnmarshalUint64(t, 1<<63) + + for i := uint64(0); i < 1e4; i++ { + testMarshalUnmarshalUint64(t, i) + } +} + +func testMarshalUnmarshalUint64(t *testing.T, u uint64) { + t.Helper() + + b := MarshalUint64(nil, u) + if len(b) != 8 { + t.Fatalf("unexpected b length: %d; expecting %d", len(b), 8) + } + uNew := UnmarshalUint64(b) + if uNew != u { + t.Fatalf("unexpected uNew from b=%x; got %d; expecting %d", b, uNew, u) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalUint64(prefix, u) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for u=%d; got\n%x; expecting\n%x", u, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for u=%d; got\n%x; expecting\n%x", u, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalInt16(t *testing.T) { + testMarshalUnmarshalInt16(t, 0) + testMarshalUnmarshalInt16(t, 1) + testMarshalUnmarshalInt16(t, -1) + testMarshalUnmarshalInt16(t, -1<<15) + testMarshalUnmarshalInt16(t, (-1<<15)+1) + testMarshalUnmarshalInt16(t, (1<<15)-1) + + for i := int16(0); i < 1e4; i++ { + testMarshalUnmarshalInt16(t, i) + testMarshalUnmarshalInt16(t, -i) + } +} + +func testMarshalUnmarshalInt16(t *testing.T, v int16) { + t.Helper() + + b := MarshalInt16(nil, v) + if len(b) != 2 { + t.Fatalf("unexpected b length: %d; expecting %d", len(b), 2) + } + vNew := UnmarshalInt16(b) + if vNew != v { + t.Fatalf("unexpected vNew from b=%x; got %d; expecting %d", b, vNew, v) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalInt16(prefix, v) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for v=%d; got\n%x; expecting\n%x", v, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for v=%d; got\n%x; expecting\n%x", v, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalInt64(t *testing.T) { + testMarshalUnmarshalInt64(t, 0) + testMarshalUnmarshalInt64(t, 1) + testMarshalUnmarshalInt64(t, -1) + testMarshalUnmarshalInt64(t, -1<<63) + testMarshalUnmarshalInt64(t, (-1<<63)+1) + testMarshalUnmarshalInt64(t, (1<<63)-1) + + for i := int64(0); i < 1e4; i++ { + testMarshalUnmarshalInt64(t, i) + testMarshalUnmarshalInt64(t, -i) + } +} + +func testMarshalUnmarshalInt64(t *testing.T, v int64) { + t.Helper() + + b := MarshalInt64(nil, v) + if len(b) != 8 { + t.Fatalf("unexpected b length: %d; expecting %d", len(b), 8) + } + vNew := UnmarshalInt64(b) + if vNew != v { + t.Fatalf("unexpected vNew from b=%x; got %d; expecting %d", b, vNew, v) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalInt64(prefix, v) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for v=%d; got\n%x; expecting\n%x", v, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for v=%d; got\n%x; expecting\n%x", v, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalVarInt64(t *testing.T) { + testMarshalUnmarshalVarInt64(t, 0) + testMarshalUnmarshalVarInt64(t, 1) + testMarshalUnmarshalVarInt64(t, -1) + testMarshalUnmarshalVarInt64(t, -1<<63) + testMarshalUnmarshalVarInt64(t, (-1<<63)+1) + testMarshalUnmarshalVarInt64(t, (1<<63)-1) + + for i := int64(0); i < 1e4; i++ { + testMarshalUnmarshalVarInt64(t, i) + testMarshalUnmarshalVarInt64(t, -i) + testMarshalUnmarshalVarInt64(t, i<<8) + testMarshalUnmarshalVarInt64(t, -i<<8) + testMarshalUnmarshalVarInt64(t, i<<16) + testMarshalUnmarshalVarInt64(t, -i<<16) + testMarshalUnmarshalVarInt64(t, i<<23) + testMarshalUnmarshalVarInt64(t, -i<<23) + testMarshalUnmarshalVarInt64(t, i<<33) + testMarshalUnmarshalVarInt64(t, -i<<33) + testMarshalUnmarshalVarInt64(t, i<<43) + testMarshalUnmarshalVarInt64(t, -i<<43) + testMarshalUnmarshalVarInt64(t, i<<53) + testMarshalUnmarshalVarInt64(t, -i<<53) + } +} + +func testMarshalUnmarshalVarInt64(t *testing.T, v int64) { + t.Helper() + + b := MarshalVarInt64(nil, v) + tail, vNew, err := UnmarshalVarInt64(b) + if err != nil { + t.Fatalf("unexpected error when unmarshaling v=%d from b=%x: %s", v, b, err) + } + if vNew != v { + t.Fatalf("unexpected vNew from b=%x; got %d; expecting %d", b, vNew, v) + } + if len(tail) > 0 { + t.Fatalf("unexpected data left after unmarshaling v=%d from b=%x: %x", v, b, tail) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalVarInt64(prefix, v) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for v=%d; got\n%x; expecting\n%x", v, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for v=%d; got\n%x; expecting\n%x", v, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalVarUint64(t *testing.T) { + testMarshalUnmarshalVarUint64(t, 0) + testMarshalUnmarshalVarUint64(t, 1) + testMarshalUnmarshalVarUint64(t, (1<<63)-1) + + for i := uint64(0); i < 1024; i++ { + testMarshalUnmarshalVarUint64(t, i) + testMarshalUnmarshalVarUint64(t, i<<8) + testMarshalUnmarshalVarUint64(t, i<<16) + testMarshalUnmarshalVarUint64(t, i<<23) + testMarshalUnmarshalVarUint64(t, i<<33) + testMarshalUnmarshalVarUint64(t, i<<41) + testMarshalUnmarshalVarUint64(t, i<<49) + testMarshalUnmarshalVarUint64(t, i<<54) + } +} + +func testMarshalUnmarshalVarUint64(t *testing.T, u uint64) { + t.Helper() + + b := MarshalVarUint64(nil, u) + tail, uNew, err := UnmarshalVarUint64(b) + if err != nil { + t.Fatalf("unexpected error when unmarshaling u=%d from b=%x: %s", u, b, err) + } + if uNew != u { + t.Fatalf("unexpected uNew from b=%x; got %d; expecting %d", b, uNew, u) + } + if len(tail) > 0 { + t.Fatalf("unexpected data left after unmarshaling u=%d from b=%x: %x", u, b, tail) + } + + prefix := []byte{1, 2, 3} + b1 := MarshalVarUint64(prefix, u) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for u=%d; got\n%x; expecting\n%x", u, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for u=%d; got\n%x; expecting\n%x", u, b1[len(prefix):], b) + } +} + +func TestMarshalUnmarshalBytes(t *testing.T) { + testMarshalUnmarshalBytes(t, "") + testMarshalUnmarshalBytes(t, "x") + testMarshalUnmarshalBytes(t, "xy") + + var bb bytes.Buffer + for i := 0; i < 100; i++ { + fmt.Fprintf(&bb, " %d ", i) + s := bb.String() + testMarshalUnmarshalBytes(t, s) + } +} + +func testMarshalUnmarshalBytes(t *testing.T, s string) { + t.Helper() + + b := MarshalBytes(nil, []byte(s)) + tail, bNew, err := UnmarshalBytes(b) + if err != nil { + t.Fatalf("unexpected error when unmarshaling s=%q from b=%x: %s", s, b, err) + } + if string(bNew) != s { + t.Fatalf("unexpected sNew from b=%x; got %q; expecting %q", b, bNew, s) + } + if len(tail) > 0 { + t.Fatalf("unexepcted data left after unmarshaling s=%q from b=%x: %x", s, b, tail) + } + + prefix := []byte("abcde") + b1 := MarshalBytes(prefix, []byte(s)) + if string(b1[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix for s=%q; got\n%x; expecting\n%x", s, b1[:len(prefix)], prefix) + } + if string(b1[len(prefix):]) != string(b) { + t.Fatalf("unexpected b for s=%q; got\n%x; expecting\n%x", s, b1[len(prefix):], b) + } +} diff --git a/lib/encoding/int_timing_test.go b/lib/encoding/int_timing_test.go new file mode 100644 index 000000000..eb244ef9e --- /dev/null +++ b/lib/encoding/int_timing_test.go @@ -0,0 +1,122 @@ +package encoding + +import ( + "fmt" + "sync/atomic" + "testing" +) + +func BenchmarkMarshalInt64(b *testing.B) { + b.ReportAllocs() + b.SetBytes(1) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + var sink uint64 + for pb.Next() { + dst = MarshalInt64(dst[:0], int64(sink)) + sink += uint64(len(dst)) + } + atomic.AddUint64(&Sink, sink) + }) +} + +func BenchmarkUnmarshalInt64(b *testing.B) { + b.ReportAllocs() + b.SetBytes(1) + b.RunParallel(func(pb *testing.PB) { + var sink uint64 + for pb.Next() { + v := UnmarshalInt64(testMarshaledInt64Data) + sink += uint64(v) + } + atomic.AddUint64(&Sink, sink) + }) +} + +func BenchmarkMarshalVarInt64s(b *testing.B) { + b.Run("up-to-(1<<6)-1", func(b *testing.B) { + benchmarkMarshalVarInt64s(b, (1<<6)-1) + }) + b.Run("up-to-(1<<13)-1", func(b *testing.B) { + benchmarkMarshalVarInt64s(b, (1<<13)-1) + }) + b.Run("up-to-(1<<27)-1", func(b *testing.B) { + benchmarkMarshalVarInt64s(b, (1<<27)-1) + }) + b.Run("up-to-(1<<63)-1", func(b *testing.B) { + benchmarkMarshalVarInt64s(b, (1<<63)-1) + }) +} + +func benchmarkMarshalVarInt64s(b *testing.B, maxValue int64) { + const numsCount = 8000 + var data []int64 + n := maxValue + for i := 0; i < numsCount; i++ { + if n <= 0 { + n = maxValue + } + data = append(data, n) + n-- + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(numsCount) + b.RunParallel(func(pb *testing.PB) { + var sink uint64 + var dst []byte + for pb.Next() { + dst = MarshalVarInt64s(dst[:0], data) + sink += uint64(len(dst)) + } + atomic.AddUint64(&Sink, sink) + }) +} + +func BenchmarkUnmarshalVarInt64s(b *testing.B) { + b.Run("up-to-(1<<6)-1", func(b *testing.B) { + benchmarkUnmarshalVarInt64s(b, (1<<6)-1) + }) + b.Run("up-to-(1<<13)-1", func(b *testing.B) { + benchmarkUnmarshalVarInt64s(b, (1<<13)-1) + }) + b.Run("up-to-(1<<27)-1", func(b *testing.B) { + benchmarkUnmarshalVarInt64s(b, (1<<27)-1) + }) + b.Run("up-to-(1<<63)-1", func(b *testing.B) { + benchmarkUnmarshalVarInt64s(b, (1<<63)-1) + }) +} + +func benchmarkUnmarshalVarInt64s(b *testing.B, maxValue int64) { + const numsCount = 8000 + var data []byte + n := maxValue + for i := 0; i < numsCount; i++ { + if n <= 0 { + n = maxValue + } + data = MarshalVarInt64(data, n) + n-- + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(numsCount) + b.RunParallel(func(pb *testing.PB) { + var sink uint64 + dst := make([]int64, numsCount) + for pb.Next() { + tail, err := UnmarshalVarInt64s(dst, data) + if err != nil { + panic(fmt.Errorf("unexpected error: %s", err)) + } + if len(tail) > 0 { + panic(fmt.Errorf("unexpected non-empty tail with len=%d: %X", len(tail), tail)) + } + sink += uint64(len(dst)) + } + atomic.AddUint64(&Sink, sink) + }) +} + +var testMarshaledInt64Data = MarshalInt64(nil, 1234567890) diff --git a/lib/encoding/nearest_delta.go b/lib/encoding/nearest_delta.go new file mode 100644 index 000000000..844808709 --- /dev/null +++ b/lib/encoding/nearest_delta.go @@ -0,0 +1,144 @@ +package encoding + +import ( + "fmt" + "math/bits" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// marshalInt64NearestDelta encodes src using `nearest delta` encoding +// with the given precisionBits and appends the encoded value to dst. +// +// precisionBits must be in the range [1...64], where 1 means 50% precision, +// while 64 means 100% precision, i.e. lossless encoding. +func marshalInt64NearestDelta(dst []byte, src []int64, precisionBits uint8) (result []byte, firstValue int64) { + if len(src) < 1 { + logger.Panicf("BUG: src must contain at least 1 item; got %d items", len(src)) + } + if err := CheckPrecisionBits(precisionBits); err != nil { + logger.Panicf("BUG: %s", err) + } + + firstValue = src[0] + v := src[0] + src = src[1:] + is := GetInt64s(len(src)) + if precisionBits == 64 { + // Fast path. + for i, next := range src { + d := next - v + v += d + is.A[i] = d + } + } else { + // Slower path. + trailingZeros := getTrailingZeros(v, precisionBits) + for i, next := range src { + d, tzs := nearestDelta(next, v, precisionBits, trailingZeros) + trailingZeros = tzs + v += d + is.A[i] = d + } + } + dst = MarshalVarInt64s(dst, is.A) + PutInt64s(is) + return dst, firstValue +} + +// unmarshalInt64NearestDelta decodes src using `nearest delta` encoding, +// appends the result to dst and returns the appended result. +// +// The firstValue must be the value returned from marshalInt64NearestDelta. +func unmarshalInt64NearestDelta(dst []int64, src []byte, firstValue int64, itemsCount int) ([]int64, error) { + if itemsCount < 1 { + logger.Panicf("BUG: itemsCount must be greater than 0; got %d", itemsCount) + } + + is := GetInt64s(itemsCount - 1) + defer PutInt64s(is) + + tail, err := UnmarshalVarInt64s(is.A, src) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal nearest delta: %s", err) + } + if len(tail) > 0 { + return nil, fmt.Errorf("unexpected tail left after unmarshaling %d items; tail size=%d, value=%X", itemsCount, len(tail), tail) + } + + v := firstValue + dst = append(dst, v) + for _, d := range is.A { + v += d + dst = append(dst, v) + } + return dst, nil +} + +// nearestDelta returns the nearest value for (next-prev) with the given +// precisionBits. +// +// The second returned value is the number of zeroed trailing bits +// in the returned delta. +func nearestDelta(next, prev int64, precisionBits, prevTrailingZeros uint8) (int64, uint8) { + d := next - prev + if d == 0 { + // Fast path. + return 0, decIfNonZero(prevTrailingZeros) + } + + origin := next + if origin < 0 { + origin = -origin + // There is no need in handling special case origin = -1<<63. + } + + originBits := 64 - uint8(bits.LeadingZeros64(uint64(origin))) + if originBits <= precisionBits { + // Cannot zero trailing bits for the given precisionBits. + return d, decIfNonZero(prevTrailingZeros) + } + + // originBits > precisionBits. May zero trailing bits in d. + trailingZeros := originBits - precisionBits + if trailingZeros > prevTrailingZeros+4 { + // Probably counter reset. Return d with full precision. + return d, prevTrailingZeros + 2 + } + if trailingZeros+4 < prevTrailingZeros { + // Probably counter reset. Return d with full precision. + return d, prevTrailingZeros - 2 + } + + // zero trailing bits in d. + minus := false + if d < 0 { + minus = true + d = -d + // There is no need in handling special case d = -1<<63. + } + nd := int64(uint64(d) & (uint64(1<<64-1) << trailingZeros)) + if minus { + nd = -nd + } + return nd, trailingZeros +} + +func decIfNonZero(n uint8) uint8 { + if n == 0 { + return 0 + } + return n - 1 +} + +func getTrailingZeros(v int64, precisionBits uint8) uint8 { + if v < 0 { + v = -v + // There is no need in special case handling for v = -1<<63 + } + vBits := 64 - uint8(bits.LeadingZeros64(uint64(v))) + if vBits <= precisionBits { + return 0 + } + return vBits - precisionBits +} diff --git a/lib/encoding/nearest_delta2.go b/lib/encoding/nearest_delta2.go new file mode 100644 index 000000000..cdc4a63d9 --- /dev/null +++ b/lib/encoding/nearest_delta2.go @@ -0,0 +1,83 @@ +package encoding + +import ( + "fmt" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// marshalInt64NearestDelta2 encodes src using `nearest delta2` encoding +// with the given precisionBits and appends the encoded value to dst. +// +// precisionBits must be in the range [1...64], where 1 means 50% precision, +// while 64 means 100% precision, i.e. lossless encoding. +func marshalInt64NearestDelta2(dst []byte, src []int64, precisionBits uint8) (result []byte, firstValue int64) { + if len(src) < 2 { + logger.Panicf("BUG: src must contain at least 2 items; got %d items", len(src)) + } + if err := CheckPrecisionBits(precisionBits); err != nil { + logger.Panicf("BUG: %s", err) + } + + firstValue = src[0] + d1 := src[1] - src[0] + dst = MarshalVarInt64(dst, d1) + v := src[1] + src = src[2:] + is := GetInt64s(len(src)) + if precisionBits == 64 { + // Fast path. + for i, next := range src { + d2 := next - v - d1 + d1 += d2 + v += d1 + is.A[i] = d2 + } + } else { + // Slower path. + trailingZeros := getTrailingZeros(v, precisionBits) + for i, next := range src { + d2, tzs := nearestDelta(next-v, d1, precisionBits, trailingZeros) + trailingZeros = tzs + d1 += d2 + v += d1 + is.A[i] = d2 + } + } + dst = MarshalVarInt64s(dst, is.A) + PutInt64s(is) + return dst, firstValue +} + +// unmarshalInt64NearestDelta2 decodes src using `nearest delta2` encoding, +// appends the result to dst and returns the appended result. +// +// firstValue must be the value returned from marshalInt64NearestDelta2. +func unmarshalInt64NearestDelta2(dst []int64, src []byte, firstValue int64, itemsCount int) ([]int64, error) { + if itemsCount < 2 { + logger.Panicf("BUG: itemsCount must be greater than 1; got %d", itemsCount) + } + + is := GetInt64s(itemsCount - 1) + defer PutInt64s(is) + + tail, err := UnmarshalVarInt64s(is.A, src) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal nearest delta: %s", err) + } + if len(tail) > 0 { + return nil, fmt.Errorf("unexpected tail left after unmarshaling %d items; tail size=%d, value=%X", itemsCount, len(tail), tail) + } + + v := firstValue + d1 := is.A[0] + dst = append(dst, v) + v += d1 + dst = append(dst, v) + for _, d2 := range is.A[1:] { + d1 += d2 + v += d1 + dst = append(dst, v) + } + return dst, nil +} diff --git a/lib/encoding/nearest_delta2_test.go b/lib/encoding/nearest_delta2_test.go new file mode 100644 index 000000000..dcf05200b --- /dev/null +++ b/lib/encoding/nearest_delta2_test.go @@ -0,0 +1,286 @@ +package encoding + +import ( + "fmt" + "math/rand" + "reflect" + "testing" +) + +func TestNearestDelta(t *testing.T) { + testNearestDelta(t, 0, 0, 1, 0, 0) + testNearestDelta(t, 0, 0, 2, 0, 0) + testNearestDelta(t, 0, 0, 3, 0, 0) + testNearestDelta(t, 0, 0, 4, 0, 0) + + testNearestDelta(t, 100, 100, 4, 0, 2) + testNearestDelta(t, 123456, 123456, 4, 0, 12) + testNearestDelta(t, -123456, -123456, 4, 0, 12) + testNearestDelta(t, 9876543210, 9876543210, 4, 0, 29) + + testNearestDelta(t, 1, 2, 3, -1, 0) + testNearestDelta(t, 2, 1, 3, 1, 0) + testNearestDelta(t, -1, -2, 3, 1, 0) + testNearestDelta(t, -2, -1, 3, -1, 0) + + testNearestDelta(t, 0, 1, 1, -1, 0) + testNearestDelta(t, 1, 2, 1, -1, 0) + testNearestDelta(t, 2, 3, 1, 0, 1) + testNearestDelta(t, 1, 0, 1, 1, 0) + testNearestDelta(t, 2, 1, 1, 0, 1) + testNearestDelta(t, 2, 1, 2, 1, 0) + testNearestDelta(t, 2, 1, 3, 1, 0) + + testNearestDelta(t, 0, -1, 1, 1, 0) + testNearestDelta(t, -1, -2, 1, 1, 0) + testNearestDelta(t, -2, -3, 1, 0, 1) + testNearestDelta(t, -1, 0, 1, -1, 0) + testNearestDelta(t, -2, -1, 1, 0, 1) + testNearestDelta(t, -2, -1, 2, -1, 0) + testNearestDelta(t, -2, -1, 3, -1, 0) + + testNearestDelta(t, 0, 2, 3, -2, 0) + testNearestDelta(t, 3, 0, 3, 3, 0) + testNearestDelta(t, 4, 0, 3, 4, 0) + testNearestDelta(t, 5, 0, 3, 5, 0) + testNearestDelta(t, 6, 0, 3, 6, 0) + testNearestDelta(t, 0, 7, 3, -7, 0) + testNearestDelta(t, 8, 0, 3, 8, 1) + testNearestDelta(t, 9, 0, 3, 8, 1) + testNearestDelta(t, 15, 0, 3, 14, 1) + testNearestDelta(t, 16, 0, 3, 16, 2) + testNearestDelta(t, 17, 0, 3, 16, 2) + testNearestDelta(t, 18, 0, 3, 16, 2) + testNearestDelta(t, 0, 59, 6, -59, 0) + + testNearestDelta(t, 128, 121, 1, 0, 7) + testNearestDelta(t, 128, 121, 2, 0, 6) + testNearestDelta(t, 128, 121, 3, 0, 5) + testNearestDelta(t, 128, 121, 4, 0, 4) + testNearestDelta(t, 128, 121, 5, 0, 3) + testNearestDelta(t, 128, 121, 6, 4, 2) + testNearestDelta(t, 128, 121, 7, 6, 1) + testNearestDelta(t, 128, 121, 8, 7, 0) + + testNearestDelta(t, 32, 37, 1, 0, 5) + testNearestDelta(t, 32, 37, 2, 0, 4) + testNearestDelta(t, 32, 37, 3, 0, 3) + testNearestDelta(t, 32, 37, 4, -4, 2) + testNearestDelta(t, 32, 37, 5, -4, 1) + testNearestDelta(t, 32, 37, 6, -5, 0) + + testNearestDelta(t, -10, 20, 1, -24, 3) + testNearestDelta(t, -10, 20, 2, -28, 2) + testNearestDelta(t, -10, 20, 3, -30, 1) + testNearestDelta(t, -10, 20, 4, -30, 0) + testNearestDelta(t, -10, 21, 4, -31, 0) + testNearestDelta(t, -10, 21, 5, -31, 0) + + testNearestDelta(t, 10, -20, 1, 24, 3) + testNearestDelta(t, 10, -20, 2, 28, 2) + testNearestDelta(t, 10, -20, 3, 30, 1) + testNearestDelta(t, 10, -20, 4, 30, 0) + testNearestDelta(t, 10, -21, 4, 31, 0) + testNearestDelta(t, 10, -21, 5, 31, 0) + + testNearestDelta(t, 1234e12, 1235e12, 1, 0, 50) + testNearestDelta(t, 1234e12, 1235e12, 10, 0, 41) + testNearestDelta(t, 1234e12, 1235e12, 35, -999999995904, 16) + + testNearestDelta(t, (1<<63)-1, 0, 1, (1<<63)-1, 2) +} + +func testNearestDelta(t *testing.T, next, prev int64, precisionBits uint8, dExpected int64, trailingZeroBitsExpected uint8) { + t.Helper() + + tz := getTrailingZeros(prev, precisionBits) + d, trailingZeroBits := nearestDelta(next, prev, precisionBits, tz) + if d != dExpected { + t.Fatalf("unexpected d for next=%d, prev=%d, precisionBits=%d; got %d; expecting %d", next, prev, precisionBits, d, dExpected) + } + if trailingZeroBits != trailingZeroBitsExpected { + t.Fatalf("unexpected trailingZeroBits for next=%d, prev=%d, precisionBits=%d; got %d; expecting %d", + next, prev, precisionBits, trailingZeroBits, trailingZeroBitsExpected) + } +} + +func TestMarshalInt64NearestDelta2(t *testing.T) { + testMarshalInt64NearestDelta2(t, []int64{0, 0}, 4, 0, "00") + testMarshalInt64NearestDelta2(t, []int64{1, -3}, 4, 1, "07") + testMarshalInt64NearestDelta2(t, []int64{255, 255}, 4, 255, "00") + testMarshalInt64NearestDelta2(t, []int64{0, 1, 2, 3, 4, 5}, 4, 0, "0200000000") + testMarshalInt64NearestDelta2(t, []int64{5, 4, 3, 2, 1, 0}, 4, 5, "0100000000") + + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 1, -5e3, "cf0f000000") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 2, -5e3, "cf0f000000") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 3, -5e3, "cf0f000000") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 4, -5e3, "cf0f00008001") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 5, -5e3, "cf0f0000c001") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 6, -5e3, "cf0f0000c001") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 7, -5e3, "cf0f0000c001") + testMarshalInt64NearestDelta2(t, []int64{-5e3, -6e3, -7e3, -8e3, -8.9e3}, 8, -5e3, "cf0f0000c801") +} + +func testMarshalInt64NearestDelta2(t *testing.T, va []int64, precisionBits uint8, firstValueExpected int64, bExpected string) { + t.Helper() + + b, firstValue := marshalInt64NearestDelta2(nil, va, precisionBits) + if firstValue != firstValueExpected { + t.Fatalf("unexpected firstValue for va=%d, precisionBits=%d; got %d; want %d", va, precisionBits, firstValue, firstValueExpected) + } + if fmt.Sprintf("%x", b) != bExpected { + t.Fatalf("invalid marshaled data for va=%d, precisionBits=%d; got\n%x; expecting\n%s", va, precisionBits, b, bExpected) + } + + prefix := []byte("foobar") + b, firstValue = marshalInt64NearestDelta2(prefix, va, precisionBits) + if firstValue != firstValueExpected { + t.Fatalf("unexpected firstValue for va=%d, precisionBits=%d; got %d; want %d", va, precisionBits, firstValue, firstValueExpected) + } + if string(b[:len(prefix)]) != string(prefix) { + t.Fatalf("invalid prefix for va=%d, precisionBits=%d; got\n%x; expecting\n%x", va, precisionBits, b[:len(prefix)], prefix) + } + if fmt.Sprintf("%x", b[len(prefix):]) != bExpected { + t.Fatalf("invalid marshaled prefixed data for va=%d, precisionBits=%d; got\n%x; expecting\n%s", va, precisionBits, b[len(prefix):], bExpected) + } +} + +func TestMarshalUnmarshalInt64NearestDelta2(t *testing.T) { + testMarshalUnmarshalInt64NearestDelta2(t, []int64{0, 0}, 4) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{1, -3}, 4) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{255, 255}, 4) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{0, 1, 2, 3, 4, 5}, 4) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{5, 4, 3, 2, 1, 0}, 4) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 1) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 2) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 3) + testMarshalUnmarshalInt64NearestDelta2(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 4) + + // Verify constant encoding. + va := []int64{} + for i := 0; i < 1024; i++ { + va = append(va, 9876543210123) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 4) + testMarshalUnmarshalInt64NearestDelta2(t, va, 63) + + // Verify encoding for monotonically incremented va. + v := int64(-35) + va = []int64{} + for i := 0; i < 1024; i++ { + v += 8 + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 4) + testMarshalUnmarshalInt64NearestDelta2(t, va, 63) + + // Verify encoding for monotonically decremented va. + v = 793 + va = []int64{} + for i := 0; i < 1024; i++ { + v -= 16 + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 4) + testMarshalUnmarshalInt64NearestDelta2(t, va, 63) + + // Verify encoding for quadratically incremented va. + v = -1234567 + va = []int64{} + for i := 0; i < 1024; i++ { + v += 32 + int64(i) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 4) + testMarshalUnmarshalInt64NearestDelta2(t, va, 63) + + // Verify encoding for decremented va with norm-float noise. + v = 787933 + va = []int64{} + for i := 0; i < 1024; i++ { + v -= 25 + int64(rand.NormFloat64()*2) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 4) + + // Verify encoding for incremented va with random noise. + v = 943854 + va = []int64{} + for i := 0; i < 1024; i++ { + v += 30 + rand.Int63n(5) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 4) + + // Verify encoding for constant va with norm-float noise. + v = -12345 + va = []int64{} + for i := 0; i < 1024; i++ { + v += int64(rand.NormFloat64() * 10) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 2) + + // Verify encoding for constant va with random noise. + v = -12345 + va = []int64{} + for i := 0; i < 1024; i++ { + v += rand.Int63n(15) - 1 + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta2(t, va, 3) +} + +func testMarshalUnmarshalInt64NearestDelta2(t *testing.T, va []int64, precisionBits uint8) { + t.Helper() + + b, firstValue := marshalInt64NearestDelta2(nil, va, precisionBits) + vaNew, err := unmarshalInt64NearestDelta2(nil, b, firstValue, len(va)) + if err != nil { + t.Fatalf("cannot unmarshal data for va=%d, precisionBits=%d from b=%x: %s", va, precisionBits, b, err) + } + if err = checkPrecisionBits(vaNew, va, precisionBits); err != nil { + t.Fatalf("too small precisionBits for va=%d, precisionBits=%d: %s, vaNew=\n%d", va, precisionBits, err, vaNew) + } + + vaPrefix := []int64{1, 2, 3, 4} + vaNew, err = unmarshalInt64NearestDelta2(vaPrefix, b, firstValue, len(va)) + if err != nil { + t.Fatalf("cannot unmarshal prefixed data for va=%d, precisionBits=%d from b=%x: %s", va, precisionBits, b, err) + } + if !reflect.DeepEqual(vaNew[:len(vaPrefix)], vaPrefix) { + t.Fatalf("unexpected prefix for va=%d, precisionBits=%d: got\n%d; expecting\n%d", va, precisionBits, vaNew[:len(vaPrefix)], vaPrefix) + } + if err = checkPrecisionBits(vaNew[len(vaPrefix):], va, precisionBits); err != nil { + t.Fatalf("too small precisionBits for prefixed va=%d, precisionBits=%d: %s, vaNew=\n%d", va, precisionBits, err, vaNew[len(vaPrefix):]) + } +} + +func checkPrecisionBits(a, b []int64, precisionBits uint8) error { + if len(a) != len(b) { + return fmt.Errorf("different-sized arrays: %d vs %d", len(a), len(b)) + } + for i, av := range a { + bv := b[i] + if av < bv { + av, bv = bv, av + } + eps := av - bv + if eps == 0 { + continue + } + if av < 0 { + av = -av + } + pbe := uint8(1) + for eps < av { + av >>= 1 + pbe++ + } + if pbe < precisionBits { + return fmt.Errorf("too low precisionBits for\na=%d\nb=%d\ngot %d; expecting %d; compared values: %d vs %d, eps=%d", + a, b, pbe, precisionBits, a[i], b[i], eps) + } + } + return nil +} diff --git a/lib/encoding/nearest_delta2_timing_test.go b/lib/encoding/nearest_delta2_timing_test.go new file mode 100644 index 000000000..322cb873e --- /dev/null +++ b/lib/encoding/nearest_delta2_timing_test.go @@ -0,0 +1,48 @@ +package encoding + +import ( + "fmt" + "sync/atomic" + "testing" +) + +func BenchmarkMarshalInt64NearestDelta2(b *testing.B) { + for _, precisionBits := range []uint8{4, 64} { + b.Run(fmt.Sprintf("precisionBits_%d", precisionBits), func(b *testing.B) { + benchmarkMarshalInt64NearestDelta2(b, precisionBits) + }) + } +} + +func benchmarkMarshalInt64NearestDelta2(b *testing.B, precisionBits uint8) { + b.ReportAllocs() + b.SetBytes(int64(len(benchInt64Array))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + for pb.Next() { + dst, _ = marshalInt64NearestDelta2(dst[:0], benchInt64Array, precisionBits) + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +func BenchmarkUnmarshalInt64NearestDelta2(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchInt64Array))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64NearestDelta2(dst[:0], benchInt64NearestDelta2Data, 0, len(benchInt64Array)) + if err != nil { + panic(fmt.Errorf("unexpected error: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchInt64NearestDelta2Data = func() []byte { + data, _ := marshalInt64NearestDelta2(nil, benchInt64Array, 4) + return data +}() diff --git a/lib/encoding/nearest_delta_test.go b/lib/encoding/nearest_delta_test.go new file mode 100644 index 000000000..fd45720be --- /dev/null +++ b/lib/encoding/nearest_delta_test.go @@ -0,0 +1,164 @@ +package encoding + +import ( + "fmt" + "math/rand" + "reflect" + "testing" +) + +func TestMarshalInt64NearestDelta(t *testing.T) { + testMarshalInt64NearestDelta(t, []int64{0}, 4, 0, "") + testMarshalInt64NearestDelta(t, []int64{0, 0}, 4, 0, "00") + testMarshalInt64NearestDelta(t, []int64{1, -3}, 4, 1, "07") + testMarshalInt64NearestDelta(t, []int64{255, 255}, 4, 255, "00") + testMarshalInt64NearestDelta(t, []int64{0, 1, 2, 3, 4, 5}, 4, 0, "0202020202") + testMarshalInt64NearestDelta(t, []int64{5, 4, 3, 2, 1, 0}, 1, 5, "0003000301") + testMarshalInt64NearestDelta(t, []int64{5, 4, 3, 2, 1, 0}, 2, 5, "0003010101") + testMarshalInt64NearestDelta(t, []int64{5, 4, 3, 2, 1, 0}, 3, 5, "0101010101") + testMarshalInt64NearestDelta(t, []int64{5, 4, 3, 2, 1, 0}, 4, 5, "0101010101") + + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 1, -5e2, "00000000") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 2, -5e2, "0000ff0300") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 3, -5e2, "00ff01ff01ff01") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 4, -5e2, "7fff017fff01") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 5, -5e2, "bf01bf01bf01bf01") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 6, -5e2, "bf01bf01bf01bf01") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 7, -5e2, "bf01cf01bf01af01") + testMarshalInt64NearestDelta(t, []int64{-5e2, -6e2, -7e2, -8e2, -8.9e2}, 8, -5e2, "c701c701c701af01") +} + +func testMarshalInt64NearestDelta(t *testing.T, va []int64, precisionBits uint8, firstValueExpected int64, bExpected string) { + t.Helper() + + b, firstValue := marshalInt64NearestDelta(nil, va, precisionBits) + if firstValue != firstValueExpected { + t.Fatalf("unexpected firstValue for va=%d, precisionBits=%d; got %d; want %d", va, precisionBits, firstValue, firstValueExpected) + } + if fmt.Sprintf("%x", b) != bExpected { + t.Fatalf("invalid marshaled data for va=%d, precisionBits=%d; got\n%x; expecting\n%s", va, precisionBits, b, bExpected) + } + + prefix := []byte("foobar") + b, firstValue = marshalInt64NearestDelta(prefix, va, precisionBits) + if firstValue != firstValueExpected { + t.Fatalf("unexpected firstValue for va=%d, precisionBits=%d; got %d; want %d", va, precisionBits, firstValue, firstValueExpected) + } + if string(b[:len(prefix)]) != string(prefix) { + t.Fatalf("invalid prefix for va=%d, precisionBits=%d; got\n%x; expecting\n%x", va, precisionBits, b[:len(prefix)], prefix) + } + if fmt.Sprintf("%x", b[len(prefix):]) != bExpected { + t.Fatalf("invalid marshaled prefixed data for va=%d, precisionBits=%d; got\n%x; expecting\n%s", va, precisionBits, b[len(prefix):], bExpected) + } +} + +func TestMarshalUnmarshalInt64NearestDelta(t *testing.T) { + testMarshalUnmarshalInt64NearestDelta(t, []int64{0}, 4) + testMarshalUnmarshalInt64NearestDelta(t, []int64{0, 0}, 4) + testMarshalUnmarshalInt64NearestDelta(t, []int64{1, -3}, 4) + testMarshalUnmarshalInt64NearestDelta(t, []int64{255, 255}, 4) + testMarshalUnmarshalInt64NearestDelta(t, []int64{0, 1, 2, 3, 4, 5}, 4) + testMarshalUnmarshalInt64NearestDelta(t, []int64{5, 4, 3, 2, 1, 0}, 4) + testMarshalUnmarshalInt64NearestDelta(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 1) + testMarshalUnmarshalInt64NearestDelta(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 2) + testMarshalUnmarshalInt64NearestDelta(t, []int64{-5e12, -6e12, -7e12, -8e12, -8.9e12}, 3) + testMarshalUnmarshalInt64NearestDelta(t, []int64{-5e12, -5.6e12, -7e12, -8e12, -8.9e12}, 4) + + // Verify constant encoding. + va := []int64{} + for i := 0; i < 1024; i++ { + va = append(va, 9876543210123) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + testMarshalUnmarshalInt64NearestDelta(t, va, 63) + + // Verify encoding for monotonically incremented va. + v := int64(-35) + va = []int64{} + for i := 0; i < 1024; i++ { + v += 8 + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + testMarshalUnmarshalInt64NearestDelta(t, va, 63) + + // Verify encoding for monotonically decremented va. + v = 793 + va = []int64{} + for i := 0; i < 1024; i++ { + v -= 16 + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + testMarshalUnmarshalInt64NearestDelta(t, va, 63) + + // Verify encoding for quadratically incremented va. + v = -1234567 + va = []int64{} + for i := 0; i < 1024; i++ { + v += 32 + int64(i) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + + // Verify encoding for decremented va with norm-float noise. + v = 787933 + va = []int64{} + for i := 0; i < 1024; i++ { + v -= 25 + int64(rand.NormFloat64()*2) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + + // Verify encoding for incremented va with random noise. + v = 943854 + va = []int64{} + for i := 0; i < 1024; i++ { + v += 30 + rand.Int63n(5) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + + // Verify encoding for constant va with norm-float noise. + v = -12345 + va = []int64{} + for i := 0; i < 1024; i++ { + v += int64(rand.NormFloat64() * 10) + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) + + // Verify encoding for constant va with random noise. + v = -12345 + va = []int64{} + for i := 0; i < 1024; i++ { + v += rand.Int63n(15) - 1 + va = append(va, v) + } + testMarshalUnmarshalInt64NearestDelta(t, va, 4) +} + +func testMarshalUnmarshalInt64NearestDelta(t *testing.T, va []int64, precisionBits uint8) { + t.Helper() + + b, firstValue := marshalInt64NearestDelta(nil, va, precisionBits) + vaNew, err := unmarshalInt64NearestDelta(nil, b, firstValue, len(va)) + if err != nil { + t.Fatalf("cannot unmarshal data for va=%d, precisionBits=%d from b=%x: %s", va, precisionBits, b, err) + } + if err = checkPrecisionBits(vaNew, va, precisionBits); err != nil { + t.Fatalf("too small precisionBits for va=%d, precisionBits=%d: %s, vaNew=\n%d", va, precisionBits, err, vaNew) + } + + vaPrefix := []int64{1, 2, 3, 4} + vaNew, err = unmarshalInt64NearestDelta(vaPrefix, b, firstValue, len(va)) + if err != nil { + t.Fatalf("cannot unmarshal prefixed data for va=%d, precisionBits=%d from b=%x: %s", va, precisionBits, b, err) + } + if !reflect.DeepEqual(vaNew[:len(vaPrefix)], vaPrefix) { + t.Fatalf("unexpected prefix for va=%d, precisionBits=%d: got\n%d; expecting\n%d", va, precisionBits, vaNew[:len(vaPrefix)], vaPrefix) + } + if err = checkPrecisionBits(vaNew[len(vaPrefix):], va, precisionBits); err != nil { + t.Fatalf("too small precisionBits for prefixed va=%d, precisionBits=%d: %s, vaNew=\n%d", va, precisionBits, err, vaNew[len(vaPrefix):]) + } +} diff --git a/lib/encoding/nearest_delta_timing_test.go b/lib/encoding/nearest_delta_timing_test.go new file mode 100644 index 000000000..d2704b099 --- /dev/null +++ b/lib/encoding/nearest_delta_timing_test.go @@ -0,0 +1,48 @@ +package encoding + +import ( + "fmt" + "sync/atomic" + "testing" +) + +func BenchmarkMarshalInt64NearestDelta(b *testing.B) { + for _, precisionBits := range []uint8{4, 64} { + b.Run(fmt.Sprintf("precisionBits_%d", precisionBits), func(b *testing.B) { + benchmarkMarshalInt64NearestDelta(b, precisionBits) + }) + } +} + +func benchmarkMarshalInt64NearestDelta(b *testing.B, precisionBits uint8) { + b.ReportAllocs() + b.SetBytes(int64(len(benchInt64Array))) + b.RunParallel(func(pb *testing.PB) { + var dst []byte + for pb.Next() { + dst, _ = marshalInt64NearestDelta(dst[:0], benchInt64Array, precisionBits) + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +func BenchmarkUnmarshalInt64NearestDelta(b *testing.B) { + b.ReportAllocs() + b.SetBytes(int64(len(benchInt64Array))) + b.RunParallel(func(pb *testing.PB) { + var dst []int64 + var err error + for pb.Next() { + dst, err = unmarshalInt64NearestDelta(dst[:0], benchInt64NearestDeltaData, 0, len(benchInt64Array)) + if err != nil { + panic(fmt.Errorf("unexpected error: %s", err)) + } + atomic.AddUint64(&Sink, uint64(len(dst))) + } + }) +} + +var benchInt64NearestDeltaData = func() []byte { + data, _ := marshalInt64NearestDelta(nil, benchInt64Array, 4) + return data +}() diff --git a/lib/filestream/filestream.go b/lib/filestream/filestream.go new file mode 100644 index 000000000..5152345e4 --- /dev/null +++ b/lib/filestream/filestream.go @@ -0,0 +1,241 @@ +package filestream + +import ( + "bufio" + "fmt" + "os" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "github.com/VictoriaMetrics/metrics" +) + +const dontNeedBlockSize = 16 * 1024 * 1024 + +// ReadCloser is a standard interface for filestream Reader. +type ReadCloser interface { + Read(p []byte) (int, error) + MustClose() +} + +// WriteCloser is a standard interface for filestream Writer. +type WriteCloser interface { + Write(p []byte) (int, error) + MustClose() +} + +func getBufferSize() int { + bufferSizeOnce.Do(func() { + n := memory.Allowed() / 1024 / 8 + if n < 4*1024 { + n = 4 * 1024 + } + if n > 512*1024 { + n = 512 * 1024 + } + bufferSize = n + }) + return bufferSize +} + +var ( + bufferSize int + bufferSizeOnce sync.Once +) + +// Reader implements buffered file reader. +type Reader struct { + f *os.File + br *bufio.Reader + st streamTracker +} + +// Open opens the file from the given path in nocache mode. +// +// If nocache is set, then the reader doesn't pollute OS page cache. +func Open(path string, nocache bool) (*Reader, error) { + f, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("cannot open file %q: %s", path, err) + } + r := &Reader{ + f: f, + br: getBufioReader(f), + } + if nocache { + r.st.fd = f.Fd() + } + readersCount.Inc() + return r, nil +} + +// MustClose closes the underlying file passed to Open. +func (r *Reader) MustClose() { + if err := r.st.close(); err != nil { + logger.Panicf("FATAL: cannot close streamTracker for file %q: %s", r.f.Name(), err) + } + if err := r.f.Close(); err != nil { + logger.Panicf("FATAL: cannot close file %q: %s", r.f.Name(), err) + } + r.f = nil + + putBufioReader(r.br) + r.br = nil + + readersCount.Dec() +} + +var ( + readCallsBuffered = metrics.NewCounter(`vm_filestream_buffered_read_calls_total`) + readCallsReal = metrics.NewCounter(`vm_filestream_real_read_calls_total`) + readBytesBuffered = metrics.NewCounter(`vm_filestream_buffered_read_bytes_total`) + readBytesReal = metrics.NewCounter(`vm_filestream_real_read_bytes_total`) + readersCount = metrics.NewCounter(`vm_filestream_readers`) +) + +// Read reads file contents to p. +func (r *Reader) Read(p []byte) (int, error) { + readCallsBuffered.Inc() + n, err := r.br.Read(p) + readBytesBuffered.Add(n) + if err != nil { + return n, err + } + if err := r.st.adviseDontNeed(n, false); err != nil { + return n, fmt.Errorf("advise error for %q: %s", r.f.Name(), err) + } + return n, nil +} + +type statReader struct { + *os.File +} + +func (sr *statReader) Read(p []byte) (int, error) { + readCallsReal.Inc() + n, err := sr.File.Read(p) + readBytesReal.Add(n) + return n, err +} + +func getBufioReader(f *os.File) *bufio.Reader { + sr := &statReader{f} + v := brPool.Get() + if v == nil { + return bufio.NewReaderSize(sr, getBufferSize()) + } + br := v.(*bufio.Reader) + br.Reset(sr) + return br +} + +func putBufioReader(br *bufio.Reader) { + brPool.Put(br) +} + +var brPool sync.Pool + +// Writer implements buffered file writer. +type Writer struct { + f *os.File + bw *bufio.Writer + st streamTracker +} + +// Create creates the file for the given path in nocache mode. +// +// If nocache is set, the writer doesn't pollute OS page cache. +func Create(path string, nocache bool) (*Writer, error) { + f, err := os.Create(path) + if err != nil { + return nil, fmt.Errorf("cannot create file %q: %s", path, err) + } + w := &Writer{ + f: f, + bw: getBufioWriter(f), + } + if nocache { + w.st.fd = f.Fd() + } + writersCount.Inc() + return w, nil +} + +// MustClose syncs the underlying file to storage and then closes it. +func (w *Writer) MustClose() { + if err := w.bw.Flush(); err != nil { + logger.Panicf("FATAL: cannot flush data to file %q: %s", w.f.Name(), err) + } + putBufioWriter(w.bw) + w.bw = nil + + if err := w.f.Sync(); err != nil { + logger.Panicf("FATAL: cannot sync file %q: %d", w.f.Name(), err) + } + if err := w.st.close(); err != nil { + logger.Panicf("FATAL: cannot close streamTracker for file %q: %s", w.f.Name(), err) + } + if err := w.f.Close(); err != nil { + logger.Panicf("FATAL: cannot close file %q: %s", w.f.Name(), err) + } + w.f = nil + + writersCount.Dec() +} + +var ( + writeCallsBuffered = metrics.NewCounter(`vm_filestream_buffered_write_calls_total`) + writeCallsReal = metrics.NewCounter(`vm_filestream_real_write_calls_total`) + writtenBytesBuffered = metrics.NewCounter(`vm_filestream_buffered_written_bytes_total`) + writtenBytesReal = metrics.NewCounter(`vm_filestream_real_written_bytes_total`) + writersCount = metrics.NewCounter(`vm_filestream_writers`) +) + +// Write writes p to the underlying file. +func (w *Writer) Write(p []byte) (int, error) { + writeCallsBuffered.Inc() + n, err := w.bw.Write(p) + writtenBytesBuffered.Add(n) + if err != nil { + return n, err + } + if err := w.st.adviseDontNeed(n, true); err != nil { + return n, fmt.Errorf("advise error for %q: %s", w.f.Name(), err) + } + return n, nil +} + +type statWriter struct { + *os.File +} + +func (sw *statWriter) Write(p []byte) (int, error) { + writeCallsReal.Inc() + n, err := sw.File.Write(p) + writtenBytesReal.Add(n) + return n, err +} + +func getBufioWriter(f *os.File) *bufio.Writer { + sw := &statWriter{f} + v := bwPool.Get() + if v == nil { + return bufio.NewWriterSize(sw, getBufferSize()) + } + bw := v.(*bufio.Writer) + bw.Reset(sw) + return bw +} + +func putBufioWriter(bw *bufio.Writer) { + bwPool.Put(bw) +} + +var bwPool sync.Pool + +type streamTracker struct { + fd uintptr + offset uint64 + length uint64 +} diff --git a/lib/filestream/filestream_darwin.go b/lib/filestream/filestream_darwin.go new file mode 100644 index 000000000..040660083 --- /dev/null +++ b/lib/filestream/filestream_darwin.go @@ -0,0 +1,9 @@ +package filestream + +func (st *streamTracker) adviseDontNeed(n int, fdatasync bool) error { + return nil +} + +func (st *streamTracker) close() error { + return nil +} diff --git a/lib/filestream/filestream_linux.go b/lib/filestream/filestream_linux.go new file mode 100644 index 000000000..07f2bb4fe --- /dev/null +++ b/lib/filestream/filestream_linux.go @@ -0,0 +1,39 @@ +package filestream + +import ( + "fmt" + "golang.org/x/sys/unix" +) + +func (st *streamTracker) adviseDontNeed(n int, fdatasync bool) error { + st.length += uint64(n) + if st.fd == 0 { + return nil + } + if st.length < dontNeedBlockSize { + return nil + } + blockSize := st.length - (st.length % dontNeedBlockSize) + if fdatasync { + if err := unix.Fdatasync(int(st.fd)); err != nil { + return fmt.Errorf("unix.Fdatasync error: %s", err) + } + } + if err := unix.Fadvise(int(st.fd), int64(st.offset), int64(blockSize), unix.FADV_DONTNEED); err != nil { + return fmt.Errorf("unix.Fadvise(FADV_DONTNEEDED, %d, %d) error: %s", st.offset, blockSize, err) + } + st.offset += blockSize + st.length -= blockSize + return nil +} + +func (st *streamTracker) close() error { + if st.fd == 0 { + return nil + } + // Advise the whole file as it shouldn't be cached. + if err := unix.Fadvise(int(st.fd), 0, 0, unix.FADV_DONTNEED); err != nil { + return fmt.Errorf("unix.Fadvise(FADV_DONTNEEDED, 0, 0) error: %s", err) + } + return nil +} diff --git a/lib/filestream/filestream_test.go b/lib/filestream/filestream_test.go new file mode 100644 index 000000000..a0d56973b --- /dev/null +++ b/lib/filestream/filestream_test.go @@ -0,0 +1,57 @@ +package filestream + +import ( + "bytes" + "fmt" + "io" + "os" + "testing" +) + +func TestWriteRead(t *testing.T) { + testWriteRead(t, false, "") + testWriteRead(t, true, "") + testWriteRead(t, false, "foobar") + testWriteRead(t, true, "foobar") + testWriteRead(t, false, "a\nb\nc\n") + testWriteRead(t, true, "a\nb\nc\n") + + var bb bytes.Buffer + for bb.Len() < 3*dontNeedBlockSize { + fmt.Fprintf(&bb, "line %d\n", bb.Len()) + } + testStr := bb.String() + + testWriteRead(t, false, testStr) + testWriteRead(t, true, testStr) +} + +func testWriteRead(t *testing.T, nocache bool, testStr string) { + t.Helper() + + w, err := Create("./nocache_test.txt", nocache) + if err != nil { + t.Fatalf("cannot create file: %s", err) + } + defer func() { + _ = os.Remove("./nocache_test.txt") + }() + + if _, err := fmt.Fprintf(w, "%s", testStr); err != nil { + t.Fatalf("unexpected error when writing testStr: %s", err) + } + w.MustClose() + + r, err := Open("./nocache_test.txt", nocache) + if err != nil { + t.Fatalf("cannot open file: %s", err) + } + buf := make([]byte, len(testStr)) + if _, err := io.ReadFull(r, buf); err != nil { + t.Fatalf("unexpected error when reading: %s", err) + } + if string(buf) != testStr { + t.Fatalf("unexpected data read: got\n%x; want\n%x", buf, testStr) + } + r.MustClose() +} diff --git a/lib/flagutil/array.go b/lib/flagutil/array.go new file mode 100644 index 000000000..d8b55c2fe --- /dev/null +++ b/lib/flagutil/array.go @@ -0,0 +1,18 @@ +package flagutil + +import "strings" + +// Array holds an array of flag values +type Array []string + +// String implements flag.Value interface +func (a *Array) String() string { + return strings.Join(*a, ",") +} + +// Set implements flag.Value interface +func (a *Array) Set(value string) error { + values := strings.Split(value, ",") + *a = append(*a, values...) + return nil +} diff --git a/lib/flagutil/array_test.go b/lib/flagutil/array_test.go new file mode 100644 index 000000000..835d9cfa5 --- /dev/null +++ b/lib/flagutil/array_test.go @@ -0,0 +1,34 @@ +package flagutil + +import ( + "flag" + "os" + "testing" +) + +var fooFlag Array + +func init() { + os.Args = append(os.Args, "--fooFlag=foo", "--fooFlag=bar") + flag.Var(&fooFlag, "fooFlag", "test") +} + +func TestMain(m *testing.M) { + flag.Parse() + os.Exit(m.Run()) +} + +func TestArray(t *testing.T) { + expected := map[string]struct{}{ + "foo": {}, + "bar": {}, + } + if len(expected) != len(fooFlag) { + t.Errorf("len array flag (%d) is not equal to %d", len(fooFlag), len(expected)) + } + for _, i := range fooFlag { + if _, ok := expected[i]; !ok { + t.Errorf("unexpected item in array %v", i) + } + } +} diff --git a/lib/fs/fs.go b/lib/fs/fs.go new file mode 100644 index 000000000..233afa514 --- /dev/null +++ b/lib/fs/fs.go @@ -0,0 +1,276 @@ +package fs + +import ( + "fmt" + "io" + "os" + "path/filepath" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/metrics" +) + +// ReadAtCloser is rand-access read interface. +type ReadAtCloser interface { + // ReadAt must read len(p) bytes from offset off to p. + ReadAt(p []byte, off int64) + + // MustClose must close the reader. + MustClose() +} + +// ReaderAt implements rand-access read. +type ReaderAt struct { + f *os.File +} + +// ReadAt reads len(p) bytes from off to p. +func (ra *ReaderAt) ReadAt(p []byte, off int64) { + if len(p) == 0 { + return + } + n, err := ra.f.ReadAt(p, off) + if err != nil { + logger.Panicf("FATAL: cannot read %d bytes at offset %d of file %q: %s", len(p), off, ra.f.Name(), err) + } + if n != len(p) { + logger.Panicf("FATAL: unexpected number of bytes read; got %d; want %d", n, len(p)) + } + readCalls.Inc() + readBytes.Add(len(p)) +} + +// MustClose closes ra. +func (ra *ReaderAt) MustClose() { + if err := ra.f.Close(); err != nil { + logger.Panicf("FATAL: cannot close file %q: %s", ra.f.Name(), err) + } + readersCount.Dec() +} + +// OpenReaderAt opens a file on the given path for random-read access. +// +// The file must be closed with MustClose when no longer needed. +func OpenReaderAt(path string) (*ReaderAt, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + readersCount.Inc() + ra := &ReaderAt{ + f: f, + } + return ra, nil +} + +var ( + readCalls = metrics.NewCounter(`vm_fs_read_calls_total`) + readBytes = metrics.NewCounter(`vm_fs_read_bytes_total`) + readersCount = metrics.NewCounter(`vm_fs_readers`) +) + +// SyncPath syncs contents of the given path. +func SyncPath(path string) { + d, err := os.Open(path) + if err != nil { + logger.Panicf("FATAL: cannot open %q: %s", path, err) + } + if err := d.Sync(); err != nil { + _ = d.Close() + logger.Panicf("FATAL: cannot flush %q to storage: %s", path, err) + } + if err := d.Close(); err != nil { + logger.Panicf("FATAL: cannot close %q: %s", path, err) + } +} + +// WriteFile writes data to the given file path. +// +// WriteFile returns only after the file is fully written +// to the underlying storage. +func WriteFile(path string, data []byte) error { + if IsPathExist(path) { + return fmt.Errorf("cannot create file %q, since it already exists", path) + } + f, err := filestream.Create(path, false) + if err != nil { + return fmt.Errorf("cannot create file %q: %s", path, err) + } + if _, err := f.Write(data); err != nil { + f.MustClose() + return fmt.Errorf("cannot write %d bytes to file %q: %s", len(data), path, err) + } + + // Sync and close the file. + f.MustClose() + + // Sync the containing directory, so the file is guaranteed to appear in the directory. + // See https://www.quora.com/When-should-you-fsync-the-containing-directory-in-addition-to-the-file-itself + absPath, err := filepath.Abs(path) + if err != nil { + return fmt.Errorf("cannot obtain absolute path to %q: %s", path, err) + } + parentDirPath, _ := filepath.Split(absPath) + SyncPath(parentDirPath) + + return nil +} + +// MkdirAllIfNotExist creates the given path dir if it isn't exist. +func MkdirAllIfNotExist(path string) error { + if IsPathExist(path) { + return nil + } + return os.MkdirAll(path, 0755) +} + +// MkdirAllFailIfExist creates the given path dir if it isn't exist. +// +// Returns error if path already exists. +func MkdirAllFailIfExist(path string) error { + if IsPathExist(path) { + return fmt.Errorf("the %q already exists", path) + } + return os.MkdirAll(path, 0755) +} + +// RemoveDirContents removes all the contents of the given dir it it exists. +// +// It doesn't remove the dir itself, so the dir may be mounted +// to a separate partition. +func RemoveDirContents(dir string) { + if !IsPathExist(dir) { + // The path doesn't exist, so nothing to remove. + return + } + d, err := os.Open(dir) + if err != nil { + logger.Panicf("FATAL: cannot open dir %q: %s", dir, err) + } + defer MustClose(d) + names, err := d.Readdirnames(-1) + if err != nil { + logger.Panicf("FATAL: cannot read contents of the dir %q: %s", dir, err) + } + for _, name := range names { + if name == "." || name == ".." || name == "lost+found" { + // Skip special dirs. + continue + } + fullPath := dir + "/" + name + if err := os.RemoveAll(fullPath); err != nil { + logger.Panicf("FATAL: cannot remove %q: %s", fullPath, err) + } + } + SyncPath(dir) +} + +// MustClose must close the given file f. +func MustClose(f *os.File) { + fname := f.Name() + if err := f.Close(); err != nil { + logger.Panicf("FATAL: cannot close %q: %s", fname, err) + } +} + +// IsPathExist returns whether the given path exists. +func IsPathExist(path string) bool { + if _, err := os.Stat(path); err != nil { + if os.IsNotExist(err) { + return false + } + logger.Panicf("FATAL: cannot stat %q: %s", path, err) + } + return true +} + +// MustRemoveAllSynced removes path with all the contents +// and syncs the parent directory, so it no longer contains the path. +func MustRemoveAllSynced(path string) { + if err := os.RemoveAll(path); err != nil { + logger.Panicf("FATAL: cannot remove %q: %s", path, err) + } + SyncPath(filepath.Dir(path)) +} + +// HardLinkFiles makes hard links for all the files from srcDir in dstDir. +func HardLinkFiles(srcDir, dstDir string) error { + if err := os.MkdirAll(dstDir, 0755); err != nil { + return fmt.Errorf("cannot create dstDir=%q: %s", dstDir, err) + } + + d, err := os.Open(srcDir) + if err != nil { + return fmt.Errorf("cannot open srcDir=%q: %s", srcDir, err) + } + defer func() { + if err := d.Close(); err != nil { + logger.Panicf("FATAL: cannot close %q: %s", srcDir, err) + } + }() + + fis, err := d.Readdir(-1) + if err != nil { + return fmt.Errorf("cannot read files in scrDir=%q: %s", srcDir, err) + } + for _, fi := range fis { + if IsDirOrSymlink(fi) { + // Skip directories. + continue + } + fn := fi.Name() + srcPath := srcDir + "/" + fn + dstPath := dstDir + "/" + fn + if err := os.Link(srcPath, dstPath); err != nil { + return err + } + } + + SyncPath(dstDir) + return nil +} + +// IsDirOrSymlink returns true if fi is directory or symlink. +func IsDirOrSymlink(fi os.FileInfo) bool { + return fi.IsDir() || (fi.Mode()&os.ModeSymlink == os.ModeSymlink) +} + +// SymlinkRelative creates relative symlink for srcPath in dstPath. +func SymlinkRelative(srcPath, dstPath string) error { + baseDir := filepath.Dir(dstPath) + srcPathRel, err := filepath.Rel(baseDir, srcPath) + if err != nil { + return fmt.Errorf("cannot make relative path for srcPath=%q: %s", srcPath, err) + } + return os.Symlink(srcPathRel, dstPath) +} + +// ReadFullData reads len(data) bytes from r. +func ReadFullData(r io.Reader, data []byte) error { + n, err := io.ReadFull(r, data) + if err != nil { + if err == io.EOF { + return io.EOF + } + return fmt.Errorf("cannot read %d bytes; read only %d bytes; error: %s", len(data), n, err) + } + if n != len(data) { + logger.Panicf("BUG: io.ReadFull read only %d bytes; must read %d bytes", n, len(data)) + } + return nil +} + +// MustWriteData writes data to w. +func MustWriteData(w io.Writer, data []byte) { + if len(data) == 0 { + return + } + n, err := w.Write(data) + if err != nil { + logger.Panicf("FATAL: cannot write %d bytes: %s", len(data), err) + } + if n != len(data) { + logger.Panicf("BUG: writer wrote %d bytes instead of %d bytes", n, len(data)) + } +} diff --git a/lib/httpserver/httpserver.go b/lib/httpserver/httpserver.go new file mode 100644 index 000000000..c03ac83d3 --- /dev/null +++ b/lib/httpserver/httpserver.go @@ -0,0 +1,428 @@ +package httpserver + +import ( + "bufio" + "compress/gzip" + "context" + "crypto/tls" + "flag" + "fmt" + "io" + "net" + "net/http" + "net/http/pprof" + "runtime" + "strconv" + "strings" + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/netutil" + "github.com/VictoriaMetrics/metrics" +) + +var ( + tlsEnable = flag.Bool("tls", false, "Whether to enable TLS (aka HTTPS) for incoming requests. tlsCertFile and tlsKeyFile must be set if tls=true") + tlsCertFile = flag.String("tlsCertFile", "", "Path to file with TLS certificate. Used only if tls=true. Prefer ECDSA certs instead of RSA certs, since RSA certs are slow") + tlsKeyFile = flag.String("tlsKeyFile", "", "Path to file with TLS key. Used only if tls=true") + + httpAuthUsername = flag.String("httpAuth.username", "", "Username for HTTP Basic Auth. The authentication is disabled if empty. See also -httpAuth.password") + httpAuthPassword = flag.String("httpAuth.password", "", "Password for HTTP Basic Auth. The authentication is disabled -httpAuth.username is empty") + metricsAuthKey = flag.String("metricsAuthKey", "", "Auth key for /metrics. It overrides httpAuth settings") + pprofAuthKey = flag.String("pprofAuthKey", "", "Auth key for /debug/pprof. It overrides httpAuth settings") +) + +var ( + servers = make(map[string]*http.Server) + serversLock sync.Mutex +) + +// RequestHandler must serve the given request r and write response to w. +// +// RequestHandler must return true if the request has been served (successfully or not). +// +// RequestHandler must return false if it cannot serve the given request. +// In such cases the caller must serve the request. +type RequestHandler func(w http.ResponseWriter, r *http.Request) bool + +// Serve starts an http server on the given addr with the given rh. +// +// By default all the responses are transparently compressed, since Google +// charges a lot for the egress traffic. The compression may be disabled +// by calling DisableResponseCompression before writing the first byte to w. +func Serve(addr string, rh RequestHandler) { + scheme := "http" + if *tlsEnable { + scheme = "https" + } + logger.Infof("starting http server at %s://%s/", scheme, addr) + logger.Infof("pprof handlers are exposed at %s://%s/debug/pprof/", scheme, addr) + lnTmp, err := netutil.NewTCPListener(scheme, addr) + if err != nil { + logger.Fatalf("cannot start http server at %s: %s", addr, err) + } + setNetworkTimeouts(lnTmp) + ln := net.Listener(lnTmp) + + if *tlsEnable { + cert, err := tls.LoadX509KeyPair(*tlsCertFile, *tlsKeyFile) + if err != nil { + logger.Fatalf("cannot load TLS cert from tlsCertFile=%q, tlsKeyFile=%q: %s", *tlsCertFile, *tlsKeyFile, err) + } + cfg := &tls.Config{ + Certificates: []tls.Certificate{cert}, + } + ln = tls.NewListener(ln, cfg) + } + serveWithListener(addr, ln, rh) +} + +func setNetworkTimeouts(ln *netutil.TCPListener) { + // Set network-level read and write timeouts to reasonable values + // in order to protect from DoS or broken networks. + // Application-level timeouts must be set by the authors of request handlers. + // + // The read timeout limits the life of idle connection + ln.ReadTimeout = time.Minute + ln.WriteTimeout = time.Minute +} + +func serveWithListener(addr string, ln net.Listener, rh RequestHandler) { + s := &http.Server{ + Handler: gzipHandler(rh), + + // Disable http/2 + TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler)), + + // Do not set ReadTimeout and WriteTimeout here. + // Network-level timeouts are set in setNetworkTimeouts. + // Application-level timeouts must be set in the app. + + // Do not set IdleTimeout, since it is equivalent to read timeout + // set in setNetworkTimeouts. + + ErrorLog: logger.StdErrorLogger(), + } + serversLock.Lock() + servers[addr] = s + serversLock.Unlock() + if err := s.Serve(ln); err != nil { + if err == http.ErrServerClosed { + // The server gracefully closed. + return + } + logger.Panicf("FATAL: cannot serve http at %s: %s", addr, err) + } +} + +// Stop stops the http server on the given addr, which has been started +// via Serve func. +func Stop(addr string) error { + serversLock.Lock() + s := servers[addr] + delete(servers, addr) + serversLock.Unlock() + if s == nil { + logger.Panicf("BUG: there is no http server at %q", addr) + } + ctx, cancelFunc := context.WithTimeout(context.Background(), 5*time.Second) + defer cancelFunc() + if err := s.Shutdown(ctx); err != nil { + return fmt.Errorf("cannot gracefully shutdown http server at %q: %s", addr, err) + } + return nil +} + +func gzipHandler(rh RequestHandler) http.HandlerFunc { + hf := func(w http.ResponseWriter, r *http.Request) { + w = maybeGzipResponseWriter(w, r) + handlerWrapper(w, r, rh) + if zrw, ok := w.(*gzipResponseWriter); ok { + if err := zrw.Close(); err != nil && !isTrivialNetworkError(err) { + logger.Errorf("gzipResponseWriter.Close: %s", err) + } + } + } + return http.HandlerFunc(hf) +} + +var metricsHandlerDuration = metrics.NewSummary(`vm_http_request_duration_seconds{path="/metrics"}`) + +func handlerWrapper(w http.ResponseWriter, r *http.Request, rh RequestHandler) { + requestsTotal.Inc() + if !checkAuth(w, r) { + return + } + switch r.URL.Path { + case "/health": + w.Header().Set("Content-Type", "text/plain") + w.Write([]byte("OK")) + return + case "/metrics": + startTime := time.Now() + metricsRequests.Inc() + w.Header().Set("Content-Type", "text/plain") + writePrometheusMetrics(w) + metricsHandlerDuration.UpdateDuration(startTime) + return + case "/favicon.ico": + faviconRequests.Inc() + w.WriteHeader(http.StatusNoContent) + return + default: + if strings.HasPrefix(r.URL.Path, "/debug/pprof/") { + pprofRequests.Inc() + DisableResponseCompression(w) + pprofHandler(r.URL.Path[len("/debug/pprof/"):], w, r) + return + } + + if rh(w, r) { + return + } + + Errorf(w, "unsupported path requested: %q", r.URL.Path) + unsupportedRequestErrors.Inc() + return + } +} + +func checkAuth(w http.ResponseWriter, r *http.Request) bool { + path := r.URL.Path + if path == "/metrics" && len(*metricsAuthKey) > 0 { + authKey := r.FormValue("authKey") + if *metricsAuthKey == authKey { + return true + } + http.Error(w, "The provided authKey doesn't match -metricsAuthKey", http.StatusUnauthorized) + return false + } + if strings.HasPrefix(path, "/debug/pprof/") && len(*pprofAuthKey) > 0 { + authKey := r.FormValue("authKey") + if *pprofAuthKey == authKey { + return true + } + http.Error(w, "The provided authKey doesn't match -pprofAuthKey", http.StatusUnauthorized) + return false + } + return checkBasicAuth(w, r) +} + +func checkBasicAuth(w http.ResponseWriter, r *http.Request) bool { + if len(*httpAuthUsername) == 0 { + // HTTP Basic Auth is disabled. + return true + } + username, password, ok := r.BasicAuth() + if ok && username == *httpAuthUsername && password == *httpAuthPassword { + return true + } + w.Header().Set("WWW-Authenticate", `Basic realm="VictoriaMetrics"`) + http.Error(w, "", http.StatusUnauthorized) + return false +} + +func maybeGzipResponseWriter(w http.ResponseWriter, r *http.Request) http.ResponseWriter { + ae := r.Header.Get("Accept-Encoding") + if ae == "" { + return w + } + ae = strings.ToLower(ae) + n := strings.Index(ae, "gzip") + if n < 0 { + return w + } + h := w.Header() + h.Set("Content-Encoding", "gzip") + zw := getGzipWriter(w) + bw := getBufioWriter(zw) + zrw := &gzipResponseWriter{ + ResponseWriter: w, + zw: zw, + bw: bw, + } + return zrw +} + +// DisableResponseCompression disables response compression on w. +// +// The function must be called before the first w.Write* call. +func DisableResponseCompression(w http.ResponseWriter) { + w.Header().Del("Content-Encoding") +} + +// EnableCORS enables https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS +// on the response. +func EnableCORS(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") +} + +func getGzipWriter(w io.Writer) *gzip.Writer { + v := gzipWriterPool.Get() + if v == nil { + zw, err := gzip.NewWriterLevel(w, 1) + if err != nil { + logger.Panicf("BUG: cannot create gzip writer: %s", err) + } + return zw + } + zw := v.(*gzip.Writer) + zw.Reset(w) + return zw +} + +func putGzipWriter(zw *gzip.Writer) { + gzipWriterPool.Put(zw) +} + +var gzipWriterPool sync.Pool + +type gzipResponseWriter struct { + http.ResponseWriter + zw *gzip.Writer + bw *bufio.Writer + statusCode int + + firstWriteDone bool + disableCompression bool +} + +func (zrw *gzipResponseWriter) Write(p []byte) (int, error) { + if !zrw.firstWriteDone { + h := zrw.Header() + if h.Get("Content-Encoding") != "gzip" { + // The request handler disabled gzip encoding. + // Send uncompressed response body. + zrw.disableCompression = true + } else if h.Get("Content-Type") == "" { + // Disable auto-detection of content-type, since it + // is incorrectly detected after the compression. + h.Set("Content-Type", "text/html") + } + zrw.firstWriteDone = true + } + if zrw.statusCode == 0 { + zrw.WriteHeader(http.StatusOK) + } + if zrw.disableCompression { + return zrw.ResponseWriter.Write(p) + } + return zrw.bw.Write(p) +} + +func (zrw *gzipResponseWriter) WriteHeader(statusCode int) { + if zrw.statusCode != 0 { + return + } + if statusCode == http.StatusNoContent { + DisableResponseCompression(zrw.ResponseWriter) + } + zrw.ResponseWriter.WriteHeader(statusCode) + zrw.statusCode = statusCode +} + +// Implements http.Flusher +func (zrw *gzipResponseWriter) Flush() { + if err := zrw.bw.Flush(); err != nil && !isTrivialNetworkError(err) { + logger.Errorf("gzipResponseWriter.Flush (buffer): %s", err) + } + if err := zrw.zw.Flush(); err != nil && !isTrivialNetworkError(err) { + logger.Errorf("gzipResponseWriter.Flush (gzip): %s", err) + } + if fw, ok := zrw.ResponseWriter.(http.Flusher); ok { + fw.Flush() + } +} + +func (zrw *gzipResponseWriter) Close() error { + if !zrw.firstWriteDone { + zrw.Header().Del("Content-Encoding") + return nil + } + zrw.Flush() + err := zrw.zw.Close() + putGzipWriter(zrw.zw) + zrw.zw = nil + putBufioWriter(zrw.bw) + zrw.bw = nil + return err +} + +func getBufioWriter(w io.Writer) *bufio.Writer { + v := bufioWriterPool.Get() + if v == nil { + return bufio.NewWriterSize(w, 16*1024) + } + bw := v.(*bufio.Writer) + bw.Reset(w) + return bw +} + +func putBufioWriter(bw *bufio.Writer) { + bufioWriterPool.Put(bw) +} + +var bufioWriterPool sync.Pool + +func pprofHandler(profileName string, w http.ResponseWriter, r *http.Request) { + // This switch has been stolen from init func at https://golang.org/src/net/http/pprof/pprof.go + switch profileName { + case "cmdline": + pprofCmdlineRequests.Inc() + pprof.Cmdline(w, r) + case "profile": + pprofProfileRequests.Inc() + pprof.Profile(w, r) + case "symbol": + pprofSymbolRequests.Inc() + pprof.Symbol(w, r) + case "trace": + pprofTraceRequests.Inc() + pprof.Trace(w, r) + case "mutex": + pprofMutexRequests.Inc() + seconds, _ := strconv.Atoi(r.FormValue("seconds")) + if seconds <= 0 { + seconds = 10 + } + prev := runtime.SetMutexProfileFraction(10) + time.Sleep(time.Duration(seconds) * time.Second) + pprof.Index(w, r) + runtime.SetMutexProfileFraction(prev) + default: + pprofDefaultRequests.Inc() + pprof.Index(w, r) + } +} + +var ( + metricsRequests = metrics.NewCounter(`vm_http_requests_total{path="/metrics"}`) + pprofRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/"}`) + pprofCmdlineRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/cmdline"}`) + pprofProfileRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/profile"}`) + pprofSymbolRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/symbol"}`) + pprofTraceRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/trace"}`) + pprofMutexRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/mutex"}`) + pprofDefaultRequests = metrics.NewCounter(`vm_http_requests_total{path="/debug/pprof/default"}`) + faviconRequests = metrics.NewCounter(`vm_http_requests_total{path="/favicon.ico"}`) + + unsupportedRequestErrors = metrics.NewCounter(`vm_http_request_errors_total{path="*", reason="unsupported"}`) + + requestsTotal = metrics.NewCounter(`vm_http_requests_all_total`) +) + +// Errorf writes formatted error message to w and to logger. +func Errorf(w http.ResponseWriter, format string, args ...interface{}) { + errStr := fmt.Sprintf(format, args...) + logger.Errorf("%s", errStr) + http.Error(w, errStr, http.StatusBadRequest) +} + +func isTrivialNetworkError(err error) bool { + s := err.Error() + if strings.Contains(s, "broken pipe") || strings.Contains(s, "reset by peer") { + return true + } + return false +} diff --git a/lib/httpserver/metrics.go b/lib/httpserver/metrics.go new file mode 100644 index 000000000..1ff7a211e --- /dev/null +++ b/lib/httpserver/metrics.go @@ -0,0 +1,39 @@ +package httpserver + +import ( + "flag" + "fmt" + "io" + "strings" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "github.com/VictoriaMetrics/metrics" +) + +func writePrometheusMetrics(w io.Writer) { + metrics.WritePrometheus(w, true) + + fmt.Fprintf(w, "vm_app_version{version=%q} 1\n", buildinfo.Version) + fmt.Fprintf(w, "vm_allowed_memory_bytes %d\n", memory.Allowed()) + + // Export start time and uptime in seconds + fmt.Fprintf(w, "vm_app_start_timestamp %d\n", startTime.Unix()) + fmt.Fprintf(w, "vm_app_uptime_seconds %d\n", int(time.Since(startTime).Seconds())) + + // TODO: export other interesting stuff. + + // Export flags as metrics. + flag.VisitAll(func(f *flag.Flag) { + lname := strings.ToLower(f.Name) + value := f.Value.String() + if strings.Contains(lname, "pass") || strings.Contains(lname, "key") || strings.Contains(lname, "secret") { + // Do not expose passwords and keys to prometheus. + value = "secret" + } + fmt.Fprintf(w, "flag{name=%q, value=%q} 1\n", f.Name, value) + }) +} + +var startTime = time.Now() diff --git a/lib/logger/flag.go b/lib/logger/flag.go new file mode 100644 index 000000000..5766d21a1 --- /dev/null +++ b/lib/logger/flag.go @@ -0,0 +1,22 @@ +package logger + +import ( + "flag" + "strings" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo" +) + +func logAllFlags() { + Infof("build version: %s", buildinfo.Version) + Infof("command line flags") + flag.VisitAll(func(f *flag.Flag) { + lname := strings.ToLower(f.Name) + value := f.Value.String() + if strings.Contains(lname, "pass") || strings.Contains(lname, "key") || strings.Contains(lname, "secret") { + // Do not expose passwords and keys to prometheus. + value = "secret" + } + Infof("flag %q = %q", f.Name, value) + }) +} diff --git a/lib/logger/logger.go b/lib/logger/logger.go new file mode 100644 index 000000000..c2c8478e8 --- /dev/null +++ b/lib/logger/logger.go @@ -0,0 +1,153 @@ +package logger + +import ( + "errors" + "flag" + "fmt" + "log" + "os" + "runtime" + "strings" + "sync" + "sync/atomic" + "time" +) + +var loggerLevel = flag.String("loggerLevel", "INFO", "Minimum level of errors to log. Possible values: INFO, ERROR, FATAL, PANIC") + +// Init initializes the logger. +// +// Init must be called after flag.Parse() +// +// There is no need in calling Init from tests. +func Init() { + validateLoggerLevel() + go errorsLoggedCleaner() + logAllFlags() +} + +func validateLoggerLevel() { + switch *loggerLevel { + case "INFO", "ERROR", "FATAL", "PANIC": + default: + // We cannot use logger.Panicf here, since the logger isn't initialized yet. + panic(fmt.Errorf("FATAL: unsupported `-loggerLevel` value: %q; supported values are: INFO, ERROR, FATAL, PANIC", *loggerLevel)) + } +} + +var stdErrorLogger = log.New(&logWriter{}, "", 0) + +// StdErrorLogger returns standard error logger. +func StdErrorLogger() *log.Logger { + return stdErrorLogger +} + +// Infof logs info message. +func Infof(format string, args ...interface{}) { + logLevel("INFO", format, args...) +} + +// Errorf logs error message. +func Errorf(format string, args ...interface{}) { + logLevel("ERROR", format, args...) +} + +// Fatalf logs fatal message and terminates the app. +func Fatalf(format string, args ...interface{}) { + logLevel("FATAL", format, args...) +} + +// Panicf logs panic message and panics. +func Panicf(format string, args ...interface{}) { + logLevel("PANIC", format, args...) +} + +func logLevel(level, format string, args ...interface{}) { + if shouldSkipLog(level) { + return + } + + // rate limit ERROR log messages + if level == "ERROR" { + if n := atomic.AddUint64(&errorsLogged, 1); n > 10 { + return + } + } + + msg := fmt.Sprintf(format, args...) + logMessage(level, msg, 3) +} + +func errorsLoggedCleaner() { + for { + time.Sleep(5 * time.Second) + atomic.StoreUint64(&errorsLogged, 0) + } +} + +var errorsLogged uint64 + +type logWriter struct { +} + +func (lw *logWriter) Write(p []byte) (int, error) { + if !shouldSkipLog("ERROR") { + logMessage("ERROR", string(p), 4) + } + return len(p), nil +} + +func logMessage(level, msg string, skipframes int) { + timestamp := time.Now().UTC().Format("2006-01-02T15:04:05.000+0000") + levelLowercase := strings.ToLower(level) + _, file, line, ok := runtime.Caller(skipframes) + if !ok { + file = "???" + line = 0 + } + if n := strings.Index(file, "/VictoriaMetrics/"); n >= 0 { + // Strip /VictoriaMetrics/ prefix + file = file[n+len("/VictoriaMetrics/"):] + } + for len(msg) > 0 && msg[len(msg)-1] == '\n' { + msg = msg[:len(msg)-1] + } + logMsg := fmt.Sprintf("%s\t%s\t%s:%d\t%s\n", timestamp, levelLowercase, file, line, msg) + + // Serialize writes to log. + mu.Lock() + fmt.Fprint(os.Stderr, logMsg) + mu.Unlock() + + switch level { + case "PANIC": + panic(errors.New(msg)) + case "FATAL": + os.Exit(-1) + } +} + +var mu sync.Mutex + +func shouldSkipLog(level string) bool { + switch *loggerLevel { + case "ERROR": + switch level { + case "ERROR", "FATAL", "PANIC": + return false + default: + return true + } + case "FATAL": + switch level { + case "FATAL", "PANIC": + return false + default: + return true + } + case "PANIC": + return level != "PANIC" + default: + return false + } +} diff --git a/lib/memory/memory.go b/lib/memory/memory.go new file mode 100644 index 000000000..9ee001a4d --- /dev/null +++ b/lib/memory/memory.go @@ -0,0 +1,36 @@ +package memory + +import ( + "flag" + "fmt" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +var allowedMemPercent = flag.Float64("memory.allowedPercent", 60, "Allowed percent of system memory VictoriaMetrics caches may occupy") + +var allowedMemory int + +var once sync.Once + +// Allowed returns the amount of system memory allowed to use by the app. +// +// The function must be called only after flag.Parse is called. +func Allowed() int { + once.Do(func() { + if !flag.Parsed() { + // Do not use logger.Panicf here, since logger may be uninitialized yet. + panic(fmt.Errorf("BUG: memory.Allowed must be called only after flag.Parse call")) + } + if *allowedMemPercent < 10 || *allowedMemPercent > 200 { + logger.Panicf("FATAL: -memory.allowedPercent must be in the range [10...200]; got %f", *allowedMemPercent) + } + percent := *allowedMemPercent / 100 + + mem := sysTotalMemory() + allowedMemory = int(float64(mem) * percent) + logger.Infof("limiting caches to %d bytes of RAM according to -memory.allowedPercent=%g", allowedMemory, *allowedMemPercent) + }) + return allowedMemory +} diff --git a/lib/memory/memory_darwin.go b/lib/memory/memory_darwin.go new file mode 100644 index 000000000..4d05da995 --- /dev/null +++ b/lib/memory/memory_darwin.go @@ -0,0 +1,30 @@ +package memory + +import ( + "syscall" + "unsafe" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// This has been adapted from github.com/pbnjay/memory. +func sysTotalMemory() int { + s, err := sysctlUint64("hw.memsize") + if err != nil { + logger.Panicf("FATAL: cannot determine system memory: %s", err) + } + return int(s) +} + +func sysctlUint64(name string) (uint64, error) { + s, err := syscall.Sysctl(name) + if err != nil { + return 0, err + } + // hack because the string conversion above drops a \0 + b := []byte(s) + if len(b) < 8 { + b = append(b, 0) + } + return *(*uint64)(unsafe.Pointer(&b[0])), nil +} diff --git a/lib/memory/memory_linux.go b/lib/memory/memory_linux.go new file mode 100644 index 000000000..4dc3510fb --- /dev/null +++ b/lib/memory/memory_linux.go @@ -0,0 +1,35 @@ +package memory + +import ( + "io/ioutil" + "strconv" + "syscall" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +func sysTotalMemory() int { + var si syscall.Sysinfo_t + if err := syscall.Sysinfo(&si); err != nil { + logger.Panicf("FATAL: error in syscall.Sysinfo: %s", err) + } + totalMem := int(si.Totalram) * int(si.Unit) + + // Try determining the amount of memory inside docker container. + // See https://stackoverflow.com/questions/42187085/check-mem-limit-within-a-docker-container . + data, err := ioutil.ReadFile("/sys/fs/cgroup/memory/memory.limit_in_bytes") + if err != nil { + return totalMem + } + for len(data) > 0 && data[len(data)-1] == '\n' { + data = data[:len(data)-1] + } + mem, err := strconv.Atoi(string(data)) + if err != nil { + return totalMem + } + if mem > totalMem { + mem = totalMem + } + return mem +} diff --git a/lib/mergeset/block_header.go b/lib/mergeset/block_header.go new file mode 100644 index 000000000..7ac7d86a3 --- /dev/null +++ b/lib/mergeset/block_header.go @@ -0,0 +1,166 @@ +package mergeset + +import ( + "fmt" + "sort" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +type blockHeader struct { + // common prefix for all the items in the block. + commonPrefix []byte + + // The first item. + firstItem []byte + + // Marshal type used for block compression. + marshalType marshalType + + // The number of items in the block, excluding the first item. + itemsCount uint32 + + // The offset of the items block. + itemsBlockOffset uint64 + + // The offset of the lens block. + lensBlockOffset uint64 + + // The size of the items block. + itemsBlockSize uint32 + + // The size of the lens block. + lensBlockSize uint32 +} + +func (bh *blockHeader) Reset() { + bh.commonPrefix = bh.commonPrefix[:0] + bh.firstItem = bh.firstItem[:0] + bh.marshalType = marshalTypePlain + bh.itemsCount = 0 + bh.itemsBlockOffset = 0 + bh.lensBlockOffset = 0 + bh.itemsBlockSize = 0 + bh.lensBlockSize = 0 +} + +func (bh *blockHeader) Marshal(dst []byte) []byte { + dst = encoding.MarshalBytes(dst, bh.commonPrefix) + dst = encoding.MarshalBytes(dst, bh.firstItem) + dst = append(dst, byte(bh.marshalType)) + dst = encoding.MarshalUint32(dst, bh.itemsCount) + dst = encoding.MarshalUint64(dst, bh.itemsBlockOffset) + dst = encoding.MarshalUint64(dst, bh.lensBlockOffset) + dst = encoding.MarshalUint32(dst, bh.itemsBlockSize) + dst = encoding.MarshalUint32(dst, bh.lensBlockSize) + return dst +} + +func (bh *blockHeader) Unmarshal(src []byte) ([]byte, error) { + // Unmarshal commonPrefix + tail, cp, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal commonPrefix: %s", err) + } + bh.commonPrefix = append(bh.commonPrefix[:0], cp...) + src = tail + + // Unmarshal firstItem + tail, fi, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal firstItem: %s", err) + } + bh.firstItem = append(bh.firstItem[:0], fi...) + src = tail + + // Unmarshal marshalType + if len(src) == 0 { + return src, fmt.Errorf("cannot unmarshal marshalType from zero bytes") + } + bh.marshalType = marshalType(src[0]) + src = src[1:] + if err := checkMarshalType(bh.marshalType); err != nil { + return src, fmt.Errorf("unexpected marshalType: %s", err) + } + + // Unmarshal itemsCount + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal itemsCount from %d bytes; need at least %d bytes", len(src), 4) + } + bh.itemsCount = encoding.UnmarshalUint32(src) + src = src[4:] + + // Unmarshal itemsBlockOffset + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal itemsBlockOffset from %d bytes; neet at least %d bytes", len(src), 8) + } + bh.itemsBlockOffset = encoding.UnmarshalUint64(src) + src = src[8:] + + // Unmarshal lensBlockOffset + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal lensBlockOffset from %d bytes; need at least %d bytes", len(src), 8) + } + bh.lensBlockOffset = encoding.UnmarshalUint64(src) + src = src[8:] + + // Unmarshal itemsBlockSize + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal itemsBlockSize from %d bytes; need at least %d bytes", len(src), 4) + } + bh.itemsBlockSize = encoding.UnmarshalUint32(src) + src = src[4:] + + // Unmarshal lensBlockSize + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal lensBlockSize from %d bytes; need at least %d bytes", len(src), 4) + } + bh.lensBlockSize = encoding.UnmarshalUint32(src) + src = src[4:] + + if bh.itemsCount <= 0 { + return src, fmt.Errorf("itemsCount must be bigger than 0; got %d", bh.itemsCount) + } + if bh.itemsBlockSize > 2*maxInmemoryBlockSize { + return src, fmt.Errorf("too big itemsBlockSize; got %d; cannot exceed %d", bh.itemsBlockSize, 2*maxInmemoryBlockSize) + } + if bh.lensBlockSize > 2*8*maxInmemoryBlockSize { + return src, fmt.Errorf("too big lensBlockSize; got %d; cannot exceed %d", bh.lensBlockSize, 2*8*maxInmemoryBlockSize) + } + + return src, nil +} + +// unmarshalBlockHeaders unmarshals all the block headers from src, +// appends them to dst and returns the appended result. +// +// Block headers must be sorted by bh.firstItem. +func unmarshalBlockHeaders(dst []blockHeader, src []byte, blockHeadersCount int) ([]blockHeader, error) { + if blockHeadersCount <= 0 { + logger.Panicf("BUG: blockHeadersCount must be greater than 0; got %d", blockHeadersCount) + } + dstLen := len(dst) + if n := dstLen + blockHeadersCount - cap(dst); n > 0 { + dst = append(dst[:cap(dst)], make([]blockHeader, n)...) + } + dst = dst[:dstLen+blockHeadersCount] + for i := 0; i < blockHeadersCount; i++ { + tail, err := dst[dstLen+i].Unmarshal(src) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal block header: %s", err) + } + src = tail + } + if len(src) > 0 { + return nil, fmt.Errorf("unexpected non-zero tail left after unmarshaling %d block headers; len(tail)=%d", blockHeadersCount, len(src)) + } + newBHS := dst[dstLen:] + + // Verify that block headers are sorted by firstItem. + if !sort.SliceIsSorted(newBHS, func(i, j int) bool { return string(newBHS[i].firstItem) <= string(newBHS[j].firstItem) }) { + return nil, fmt.Errorf("block headers must be sorted by firstItem; unmarshaled unsorted block headers: %#v", newBHS) + } + + return dst, nil +} diff --git a/lib/mergeset/block_stream_reader.go b/lib/mergeset/block_stream_reader.go new file mode 100644 index 000000000..984f3035b --- /dev/null +++ b/lib/mergeset/block_stream_reader.go @@ -0,0 +1,306 @@ +package mergeset + +import ( + "fmt" + "io" + "path/filepath" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +type blockStreamReader struct { + // Block contains the current block if Next returned true. + Block inmemoryBlock + + blockItemIdx int + + path string + + // ph contains partHeader for the read part. + ph partHeader + + // All the metaindexRows. + // The blockStreamReader doesn't own mrs - it must be alive + // during the read. + mrs []metaindexRow + + // The index for the currently processed metaindexRow from mrs. + mrIdx int + + // Currently processed blockHeaders. + bhs []blockHeader + + // The index of the currently processed blockHeader. + bhIdx int + + indexReader filestream.ReadCloser + itemsReader filestream.ReadCloser + lensReader filestream.ReadCloser + + // Contains the current blockHeader. + bh *blockHeader + + // Contains the current storageBlock. + sb storageBlock + + // The number of items read so far. + itemsRead uint64 + + // The number of blocks read so far. + blocksRead uint64 + + // Whether the first item in the reader checked with ph.firstItem. + firstItemChecked bool + + packedBuf []byte + unpackedBuf []byte + + // The last error. + err error +} + +func (bsr *blockStreamReader) reset() { + bsr.Block.Reset() + bsr.blockItemIdx = 0 + bsr.path = "" + bsr.ph.Reset() + bsr.mrs = nil + bsr.mrIdx = 0 + bsr.bhs = bsr.bhs[:0] + bsr.bhIdx = 0 + + bsr.indexReader = nil + bsr.itemsReader = nil + bsr.lensReader = nil + + bsr.bh = nil + bsr.sb.Reset() + + bsr.itemsRead = 0 + bsr.blocksRead = 0 + bsr.firstItemChecked = false + + bsr.packedBuf = bsr.packedBuf[:0] + bsr.unpackedBuf = bsr.unpackedBuf[:0] + + bsr.err = nil +} + +// InitFromInmemoryPart initializes bsr from the given ip. +func (bsr *blockStreamReader) InitFromInmemoryPart(ip *inmemoryPart) { + bsr.reset() + + var err error + bsr.mrs, err = unmarshalMetaindexRows(bsr.mrs[:0], ip.metaindexData.NewReader()) + if err != nil { + logger.Panicf("BUG: cannot unmarshal metaindex rows from inmemory part: %s", err) + } + + bsr.ph.CopyFrom(&ip.ph) + bsr.indexReader = ip.indexData.NewReader() + bsr.itemsReader = ip.itemsData.NewReader() + bsr.lensReader = ip.lensData.NewReader() + + if bsr.ph.itemsCount <= 0 { + logger.Panicf("BUG: source inmemoryPart must contain at least a single item") + } + if bsr.ph.blocksCount <= 0 { + logger.Panicf("BUG: source inmemoryPart must contain at least a single block") + } +} + +// InitFromFilePart initializes bsr from a file-based part on the given path. +// +// Part files are read without OS cache pollution, since the part is usually +// deleted after the merge. +func (bsr *blockStreamReader) InitFromFilePart(path string) error { + bsr.reset() + + path = filepath.Clean(path) + + if err := bsr.ph.ParseFromPath(path); err != nil { + return fmt.Errorf("cannot parse partHeader data from %q: %s", path, err) + } + + metaindexPath := path + "/metaindex.bin" + metaindexFile, err := filestream.Open(metaindexPath, true) + if err != nil { + return fmt.Errorf("cannot open metaindex file in stream mode: %s", err) + } + bsr.mrs, err = unmarshalMetaindexRows(bsr.mrs[:0], metaindexFile) + metaindexFile.MustClose() + if err != nil { + return fmt.Errorf("cannot unmarshal metaindex rows from file %q: %s", metaindexPath, err) + } + + indexPath := path + "/index.bin" + indexFile, err := filestream.Open(indexPath, true) + if err != nil { + return fmt.Errorf("cannot open index file in stream mode: %s", err) + } + + itemsPath := path + "/items.bin" + itemsFile, err := filestream.Open(itemsPath, true) + if err != nil { + indexFile.MustClose() + return fmt.Errorf("cannot open items file in stream mode: %s", err) + } + + lensPath := path + "/lens.bin" + lensFile, err := filestream.Open(lensPath, true) + if err != nil { + indexFile.MustClose() + itemsFile.MustClose() + return fmt.Errorf("cannot open lens file in stream mode: %s", err) + } + + bsr.path = path + bsr.indexReader = indexFile + bsr.itemsReader = itemsFile + bsr.lensReader = lensFile + + return nil +} + +// MustClose closes the bsr. +// +// It closes *Reader files passed to Init. +func (bsr *blockStreamReader) MustClose() { + bsr.indexReader.MustClose() + bsr.itemsReader.MustClose() + bsr.lensReader.MustClose() + + bsr.reset() +} + +func (bsr *blockStreamReader) Next() bool { + if bsr.err != nil { + return false + } + + if bsr.bhIdx >= len(bsr.bhs) { + // The current index block is over. Try reading the next index block. + if err := bsr.readNextBHS(); err != nil { + if err == io.EOF { + // Check the last item. + lastItem := bsr.Block.items[len(bsr.Block.items)-1] + if string(bsr.ph.lastItem) != string(lastItem) { + err = fmt.Errorf("unexpected last item; got %X; want %X", lastItem, bsr.ph.lastItem) + } + } else { + err = fmt.Errorf("cannot read the next index block: %s", err) + } + bsr.err = err + return false + } + } + + bsr.bh = &bsr.bhs[bsr.bhIdx] + bsr.bhIdx++ + + bsr.sb.itemsData = bytesutil.Resize(bsr.sb.itemsData, int(bsr.bh.itemsBlockSize)) + if err := fs.ReadFullData(bsr.itemsReader, bsr.sb.itemsData); err != nil { + bsr.err = fmt.Errorf("cannot read compressed items block with size %d: %s", bsr.bh.itemsBlockSize, err) + return false + } + + bsr.sb.lensData = bytesutil.Resize(bsr.sb.lensData, int(bsr.bh.lensBlockSize)) + if err := fs.ReadFullData(bsr.lensReader, bsr.sb.lensData); err != nil { + bsr.err = fmt.Errorf("cannot read compressed lens block with size %d: %s", bsr.bh.lensBlockSize, err) + return false + } + + if err := bsr.Block.UnmarshalData(&bsr.sb, bsr.bh.firstItem, bsr.bh.commonPrefix, bsr.bh.itemsCount, bsr.bh.marshalType); err != nil { + bsr.err = fmt.Errorf("cannot unmarshal inmemoryBlock from storageBlock with firstItem=%X, commonPrefix=%X, itemsCount=%d, marshalType=%d: %s", + bsr.bh.firstItem, bsr.bh.commonPrefix, bsr.bh.itemsCount, bsr.bh.marshalType, err) + return false + } + bsr.blocksRead++ + if bsr.blocksRead > bsr.ph.blocksCount { + bsr.err = fmt.Errorf("too many blocks read: %d; must be smaller than partHeader.blocksCount %d", bsr.blocksRead, bsr.ph.blocksCount) + return false + } + bsr.blockItemIdx = 0 + bsr.itemsRead += uint64(len(bsr.Block.items)) + if bsr.itemsRead > bsr.ph.itemsCount { + bsr.err = fmt.Errorf("too many items read: %d; must be smaller than partHeader.itemsCount %d", bsr.itemsRead, bsr.ph.itemsCount) + return false + } + if !bsr.firstItemChecked { + bsr.firstItemChecked = true + if string(bsr.ph.firstItem) != string(bsr.Block.items[0]) { + bsr.err = fmt.Errorf("unexpected first item; got %X; want %X", bsr.Block.items[0], bsr.ph.firstItem) + return false + } + } + + return true +} + +func (bsr *blockStreamReader) readNextBHS() error { + if bsr.mrIdx >= len(bsr.mrs) { + return io.EOF + } + + mr := &bsr.mrs[bsr.mrIdx] + bsr.mrIdx++ + + // Read compressed index block. + bsr.packedBuf = bytesutil.Resize(bsr.packedBuf, int(mr.indexBlockSize)) + if err := fs.ReadFullData(bsr.indexReader, bsr.packedBuf); err != nil { + return fmt.Errorf("cannot read compressed index block with size %d: %s", mr.indexBlockSize, err) + } + + // Unpack the compressed index block. + var err error + bsr.unpackedBuf, err = encoding.DecompressZSTD(bsr.unpackedBuf[:0], bsr.packedBuf) + if err != nil { + return fmt.Errorf("cannot decompress index block with size %d: %s", mr.indexBlockSize, err) + } + + // Unmarshal the unpacked index block into bsr.bhs. + if n := int(mr.blockHeadersCount) - cap(bsr.bhs); n > 0 { + bsr.bhs = append(bsr.bhs[:cap(bsr.bhs)], make([]blockHeader, n)...) + } + bsr.bhs = bsr.bhs[:mr.blockHeadersCount] + bsr.bhIdx = 0 + b := bsr.unpackedBuf + for i := 0; i < int(mr.blockHeadersCount); i++ { + tail, err := bsr.bhs[i].Unmarshal(b) + if err != nil { + return fmt.Errorf("cannot unmarshal blockHeader #%d in the index block #%d: %s", len(bsr.bhs), bsr.mrIdx, err) + } + b = tail + } + if len(b) > 0 { + return fmt.Errorf("unexpected non-empty tail left after unmarshaling block headers; len(tail)=%d", len(b)) + } + return nil +} + +func (bsr *blockStreamReader) Error() error { + if bsr.err == io.EOF { + return nil + } + return bsr.err +} + +func getBlockStreamReader() *blockStreamReader { + v := bsrPool.Get() + if v == nil { + return &blockStreamReader{} + } + return v.(*blockStreamReader) +} + +func putBlockStreamReader(bsr *blockStreamReader) { + bsr.MustClose() + bsrPool.Put(bsr) +} + +var bsrPool sync.Pool diff --git a/lib/mergeset/block_stream_reader_test.go b/lib/mergeset/block_stream_reader_test.go new file mode 100644 index 000000000..056b05cec --- /dev/null +++ b/lib/mergeset/block_stream_reader_test.go @@ -0,0 +1,61 @@ +package mergeset + +import ( + "fmt" + "sort" + "testing" + "time" +) + +func TestBlockStreamReaderReadFromInmemoryPart(t *testing.T) { + var items []string + var ib inmemoryBlock + for i := 0; i < 100; i++ { + item := getRandomBytes() + if !ib.Add(item) { + break + } + items = append(items, string(item)) + } + sort.Strings(items) + var ip inmemoryPart + ip.Init(&ib) + + // Make sure items may be read concurrently from the same inmemoryPart. + ch := make(chan error, 5) + for i := 0; i < 5; i++ { + go func() { + ch <- testBlockStreamReaderRead(&ip, items) + }() + } + for i := 0; i < 5; i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(time.Second): + t.Fatalf("timeout") + } + } +} + +func testBlockStreamReaderRead(ip *inmemoryPart, items []string) error { + bsr := newTestBlockStreamReader(ip) + i := 0 + for bsr.Next() { + for _, item := range bsr.Block.items { + if string(item) != items[i] { + return fmt.Errorf("unexpected item[%d]; got %q; want %q", i, item, items[i]) + } + i++ + } + } + if err := bsr.Error(); err != nil { + return err + } + if i != len(items) { + return fmt.Errorf("unexpected number of items read; got %d; want %d", i, len(items)) + } + return nil +} diff --git a/lib/mergeset/block_stream_writer.go b/lib/mergeset/block_stream_writer.go new file mode 100644 index 000000000..6f1ec4985 --- /dev/null +++ b/lib/mergeset/block_stream_writer.go @@ -0,0 +1,228 @@ +package mergeset + +import ( + "fmt" + "os" + "path/filepath" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" +) + +type blockStreamWriter struct { + compressLevel int + path string + + metaindexWriter filestream.WriteCloser + indexWriter filestream.WriteCloser + itemsWriter filestream.WriteCloser + lensWriter filestream.WriteCloser + + sb storageBlock + bh blockHeader + mr metaindexRow + + unpackedIndexBlockBuf []byte + packedIndexBlockBuf []byte + + unpackedMetaindexBuf []byte + packedMetaindexBuf []byte + + itemsBlockOffset uint64 + lensBlockOffset uint64 + indexBlockOffset uint64 + + // whether the first item for mr has been caught. + mrFirstItemCaught bool +} + +func (bsw *blockStreamWriter) reset() { + bsw.compressLevel = 0 + bsw.path = "" + + bsw.metaindexWriter = nil + bsw.indexWriter = nil + bsw.itemsWriter = nil + bsw.lensWriter = nil + + bsw.sb.Reset() + bsw.bh.Reset() + bsw.mr.Reset() + + bsw.unpackedIndexBlockBuf = bsw.unpackedIndexBlockBuf[:0] + bsw.packedIndexBlockBuf = bsw.packedIndexBlockBuf[:0] + + bsw.unpackedMetaindexBuf = bsw.unpackedMetaindexBuf[:0] + bsw.packedMetaindexBuf = bsw.packedMetaindexBuf[:0] + + bsw.itemsBlockOffset = 0 + bsw.lensBlockOffset = 0 + bsw.indexBlockOffset = 0 + + bsw.mrFirstItemCaught = false +} + +func (bsw *blockStreamWriter) InitFromInmemoryPart(ip *inmemoryPart, compressLevel int) { + bsw.reset() + bsw.compressLevel = compressLevel + + bsw.metaindexWriter = &ip.metaindexData + bsw.indexWriter = &ip.indexData + bsw.itemsWriter = &ip.itemsData + bsw.lensWriter = &ip.lensData +} + +// InitFromFilePart initializes bsw from a file-based part on the given path. +// +// The bsw doesn't pollute OS page cache if nocache is set. +func (bsw *blockStreamWriter) InitFromFilePart(path string, nocache bool, compressLevel int) error { + path = filepath.Clean(path) + + // Create the directory + if err := fs.MkdirAllFailIfExist(path); err != nil { + return fmt.Errorf("cannot create directory %q: %s", path, err) + } + + // Create part files in the directory. + + // Always cache metaindex file in OS page cache, since it is immediately + // read after the merge. + metaindexPath := path + "/metaindex.bin" + metaindexFile, err := filestream.Create(metaindexPath, false) + if err != nil { + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create metaindex file: %s", err) + } + + indexPath := path + "/index.bin" + indexFile, err := filestream.Create(indexPath, nocache) + if err != nil { + metaindexFile.MustClose() + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create index file: %s", err) + } + + itemsPath := path + "/items.bin" + itemsFile, err := filestream.Create(itemsPath, nocache) + if err != nil { + metaindexFile.MustClose() + indexFile.MustClose() + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create items file: %s", err) + } + + lensPath := path + "/lens.bin" + lensFile, err := filestream.Create(lensPath, nocache) + if err != nil { + metaindexFile.MustClose() + indexFile.MustClose() + itemsFile.MustClose() + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create lens file: %s", err) + } + + bsw.reset() + bsw.compressLevel = compressLevel + bsw.path = path + + bsw.metaindexWriter = metaindexFile + bsw.indexWriter = indexFile + bsw.itemsWriter = itemsFile + bsw.lensWriter = lensFile + + return nil +} + +// MustClose closes the bsw. +// +// It closes *Writer files passed to Init*. +func (bsw *blockStreamWriter) MustClose() { + // Flush the remaining data. + bsw.flushIndexData() + + // Compress and write metaindex. + bsw.packedMetaindexBuf = encoding.CompressZSTDLevel(bsw.packedMetaindexBuf[:0], bsw.unpackedMetaindexBuf, bsw.compressLevel) + fs.MustWriteData(bsw.metaindexWriter, bsw.packedMetaindexBuf) + + // Close all the writers. + bsw.metaindexWriter.MustClose() + bsw.indexWriter.MustClose() + bsw.itemsWriter.MustClose() + bsw.lensWriter.MustClose() + + bsw.reset() +} + +// WriteBlock writes ib to bsw. +// +// ib must be sorted. +func (bsw *blockStreamWriter) WriteBlock(ib *inmemoryBlock) { + bsw.bh.firstItem, bsw.bh.commonPrefix, bsw.bh.itemsCount, bsw.bh.marshalType = ib.MarshalSortedData(&bsw.sb, bsw.bh.firstItem[:0], bsw.bh.commonPrefix[:0], bsw.compressLevel) + + if !bsw.mrFirstItemCaught { + bsw.mr.firstItem = append(bsw.mr.firstItem[:0], bsw.bh.firstItem...) + bsw.mrFirstItemCaught = true + } + + // Write itemsData + fs.MustWriteData(bsw.itemsWriter, bsw.sb.itemsData) + bsw.bh.itemsBlockSize = uint32(len(bsw.sb.itemsData)) + bsw.bh.itemsBlockOffset = bsw.itemsBlockOffset + bsw.itemsBlockOffset += uint64(bsw.bh.itemsBlockSize) + + // Write lensData + fs.MustWriteData(bsw.lensWriter, bsw.sb.lensData) + bsw.bh.lensBlockSize = uint32(len(bsw.sb.lensData)) + bsw.bh.lensBlockOffset = bsw.lensBlockOffset + bsw.lensBlockOffset += uint64(bsw.bh.lensBlockSize) + + // Write blockHeader + bsw.unpackedIndexBlockBuf = bsw.bh.Marshal(bsw.unpackedIndexBlockBuf) + bsw.bh.Reset() + bsw.mr.blockHeadersCount++ + if len(bsw.unpackedIndexBlockBuf) >= maxIndexBlockSize { + bsw.flushIndexData() + } +} + +// The maximum size of index block with multiple blockHeaders. +const maxIndexBlockSize = 64 * 1024 + +func (bsw *blockStreamWriter) flushIndexData() { + if len(bsw.unpackedIndexBlockBuf) == 0 { + // Nothing to flush. + return + } + + // Write indexBlock. + bsw.packedIndexBlockBuf = encoding.CompressZSTDLevel(bsw.packedIndexBlockBuf[:0], bsw.unpackedIndexBlockBuf, bsw.compressLevel) + fs.MustWriteData(bsw.indexWriter, bsw.packedIndexBlockBuf) + bsw.mr.indexBlockSize = uint32(len(bsw.packedIndexBlockBuf)) + bsw.mr.indexBlockOffset = bsw.indexBlockOffset + bsw.indexBlockOffset += uint64(bsw.mr.indexBlockSize) + bsw.unpackedIndexBlockBuf = bsw.unpackedIndexBlockBuf[:0] + + // Write metaindexRow. + bsw.unpackedMetaindexBuf = bsw.mr.Marshal(bsw.unpackedMetaindexBuf) + bsw.mr.Reset() + + // Notify that the next call to WriteBlock must catch the first item. + bsw.mrFirstItemCaught = false +} + +func getBlockStreamWriter() *blockStreamWriter { + v := bswPool.Get() + if v == nil { + return &blockStreamWriter{} + } + return v.(*blockStreamWriter) +} + +func putBlockStreamWriter(bsw *blockStreamWriter) { + bsw.reset() + bswPool.Put(bsw) +} + +var bswPool sync.Pool diff --git a/lib/mergeset/encoding.go b/lib/mergeset/encoding.go new file mode 100644 index 000000000..a347084fa --- /dev/null +++ b/lib/mergeset/encoding.go @@ -0,0 +1,464 @@ +package mergeset + +import ( + "fmt" + "sort" + "strings" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +type inmemoryBlock struct { + commonPrefix []byte + data []byte + items [][]byte +} + +func (ib *inmemoryBlock) Reset() { + ib.commonPrefix = ib.commonPrefix[:0] + ib.data = ib.data[:0] + ib.items = ib.items[:0] +} + +func (ib *inmemoryBlock) updateCommonPrefix() { + ib.commonPrefix = ib.commonPrefix[:0] + if len(ib.items) == 0 { + return + } + cp := ib.items[0] + if len(cp) == 0 { + return + } + for _, item := range ib.items[1:] { + cpLen := commonPrefixLen(cp, item) + if cpLen == 0 { + return + } + cp = cp[:cpLen] + } + ib.commonPrefix = append(ib.commonPrefix[:0], cp...) +} + +func commonPrefixLen(a, b []byte) int { + i := 0 + if len(a) > len(b) { + for i < len(b) && a[i] == b[i] { + i++ + } + } else { + for i < len(a) && a[i] == b[i] { + i++ + } + } + return i +} + +// Add adds x to the end of ib. +// +// false is returned if x isn't added to ib due to block size contraints. +func (ib *inmemoryBlock) Add(x []byte) bool { + if len(x)+len(ib.data) > maxInmemoryBlockSize { + return false + } + if cap(ib.data) < maxInmemoryBlockSize { + dataLen := len(ib.data) + ib.data = bytesutil.Resize(ib.data, maxInmemoryBlockSize)[:dataLen] + } + ib.data = append(ib.data, x...) + ib.items = append(ib.items, ib.data[len(ib.data)-len(x):]) + return true +} + +// maxInmemoryBlockSize is the maximum inmemoryBlock.data size. +// +// It must fit CPU cache size, i.e. 64KB for the current CPUs. +const maxInmemoryBlockSize = 64 * 1024 + +func (ib *inmemoryBlock) itemsLess(i, j int) bool { + return string(ib.items[i]) < string(ib.items[j]) +} + +func (ib *inmemoryBlock) sort() { + sort.Slice(ib.items, ib.itemsLess) + bb := bbPool.Get() + b := bytesutil.Resize(bb.B, len(ib.data)) + b = b[:0] + for i, item := range ib.items { + b = append(b, item...) + ib.items[i] = b[len(b)-len(item):] + } + bb.B, ib.data = ib.data, b + bbPool.Put(bb) +} + +// storageBlock represents a block of data on the storage. +type storageBlock struct { + itemsData []byte + lensData []byte +} + +func (sb *storageBlock) Reset() { + sb.itemsData = sb.itemsData[:0] + sb.lensData = sb.lensData[:0] +} + +type marshalType uint8 + +const ( + marshalTypePlain = marshalType(0) + marshalTypeZSTD = marshalType(1) +) + +func checkMarshalType(mt marshalType) error { + if mt < 0 || mt > 1 { + return fmt.Errorf("marshalType must be in the range [0..1]; got %d", mt) + } + return nil +} + +func (ib *inmemoryBlock) isSorted() bool { + return sort.SliceIsSorted(ib.items, ib.itemsLess) +} + +// MarshalUnsortedData marshals unsorted items from ib to sb. +// +// It also: +// - appends first item to firstItemDst and returns the result. +// - appends common prefix for all the items to commonPrefixDst and returns the result. +// - returns the number of items encoded including the first item. +// - returns the marshal type used for the encoding. +func (ib *inmemoryBlock) MarshalUnsortedData(sb *storageBlock, firstItemDst, commonPrefixDst []byte, compressLevel int) ([]byte, []byte, uint32, marshalType) { + if !ib.isSorted() { + ib.sort() + } + ib.updateCommonPrefix() + return ib.marshalData(sb, firstItemDst, commonPrefixDst, compressLevel) +} + +// MarshalUnsortedData marshals sorted items from ib to sb. +// +// It also: +// - appends first item to firstItemDst and returns the result. +// - appends common prefix for all the items to commonPrefixDst and returns the result. +// - returns the number of items encoded including the first item. +// - returns the marshal type used for the encoding. +func (ib *inmemoryBlock) MarshalSortedData(sb *storageBlock, firstItemDst, commonPrefixDst []byte, compressLevel int) ([]byte, []byte, uint32, marshalType) { + // if !ib.isSorted() { + // logger.Panicf("BUG: %d items must be sorted; items:\n%s", len(ib.items), ib.debugItemsString()) + // } + ib.updateCommonPrefix() + return ib.marshalData(sb, firstItemDst, commonPrefixDst, compressLevel) +} + +func (ib *inmemoryBlock) debugItemsString() string { + var sb strings.Builder + for i, item := range ib.items { + fmt.Fprintf(&sb, "%05d %X\n", i, item) + } + return sb.String() +} + +// Preconditions: +// - ib.items must be sorted. +// - updateCommonPrefix must be called. +func (ib *inmemoryBlock) marshalData(sb *storageBlock, firstItemDst, commonPrefixDst []byte, compressLevel int) ([]byte, []byte, uint32, marshalType) { + if len(ib.items) <= 0 { + logger.Panicf("BUG: inmemoryBlock.marshalData must be called on non-empty blocks only") + } + if uint64(len(ib.items)) >= 1<<32 { + logger.Panicf("BUG: the number of items in the block must be smaller than %d; got %d items", uint64(1<<32), len(ib.items)) + } + + firstItemDst = append(firstItemDst, ib.items[0]...) + commonPrefixDst = append(commonPrefixDst, ib.commonPrefix...) + + if len(ib.data)-len(ib.commonPrefix)*len(ib.items) < 64 || len(ib.items) < 10 { + // Use plain encoding form small block, since it is cheaper. + ib.marshalDataPlain(sb) + return firstItemDst, commonPrefixDst, uint32(len(ib.items)), marshalTypePlain + } + + bbItems := bbPool.Get() + bItems := bbItems.B[:0] + + bbLens := bbPool.Get() + bLens := bbLens.B[:0] + + // Marshal items data. + xs := encoding.GetUint64s(len(ib.items) - 1) + defer encoding.PutUint64s(xs) + + cpLen := len(ib.commonPrefix) + prevItem := ib.items[0][cpLen:] + prevPrefixLen := uint64(0) + for i, item := range ib.items[1:] { + item := item[cpLen:] + prefixLen := uint64(commonPrefixLen(prevItem, item)) + bItems = append(bItems, item[prefixLen:]...) + xLen := prefixLen ^ prevPrefixLen + prevItem = item + prevPrefixLen = prefixLen + + xs.A[i] = xLen + } + bLens = encoding.MarshalVarUint64s(bLens, xs.A) + sb.itemsData = encoding.CompressZSTDLevel(sb.itemsData[:0], bItems, compressLevel) + + bbItems.B = bItems + bbPool.Put(bbItems) + + // Marshal lens data. + prevItemLen := uint64(len(ib.items[0]) - cpLen) + for i, item := range ib.items[1:] { + itemLen := uint64(len(item) - cpLen) + xLen := itemLen ^ prevItemLen + prevItemLen = itemLen + + xs.A[i] = xLen + } + bLens = encoding.MarshalVarUint64s(bLens, xs.A) + sb.lensData = encoding.CompressZSTDLevel(sb.lensData[:0], bLens, compressLevel) + + bbLens.B = bLens + bbPool.Put(bbLens) + + if float64(len(sb.itemsData)) > 0.9*float64(len(ib.data)-len(ib.commonPrefix)*len(ib.items)) { + // Bad compression rate. It is cheaper to use plain encoding. + ib.marshalDataPlain(sb) + return firstItemDst, commonPrefixDst, uint32(len(ib.items)), marshalTypePlain + } + + // Good compression rate. + return firstItemDst, commonPrefixDst, uint32(len(ib.items)), marshalTypeZSTD +} + +// UnmarshalData decodes itemsCount items from sb and firstItem and stores +// them to ib. +func (ib *inmemoryBlock) UnmarshalData(sb *storageBlock, firstItem, commonPrefix []byte, itemsCount uint32, mt marshalType) error { + ib.Reset() + + if itemsCount <= 0 { + logger.Panicf("BUG: cannot unmarshal zero items") + } + + ib.commonPrefix = append(ib.commonPrefix[:0], commonPrefix...) + + switch mt { + case marshalTypePlain: + if err := ib.unmarshalDataPlain(sb, firstItem, itemsCount); err != nil { + return fmt.Errorf("cannot unmarshal plain data: %s", err) + } + if !ib.isSorted() { + return fmt.Errorf("plain data block contains unsorted items; items:\n%s", ib.debugItemsString()) + } + return nil + case marshalTypeZSTD: + // it is handled below. + default: + return fmt.Errorf("unknown marshalType=%d", mt) + } + + // Unmarshal mt = marshalTypeZSTD + + bb := bbPool.Get() + defer bbPool.Put(bb) + + var err error + + // Unmarshal lens data. + bb.B, err = encoding.DecompressZSTD(bb.B[:0], sb.lensData) + if err != nil { + return fmt.Errorf("cannot decompress lensData: %s", err) + } + + lb := getLensBuffer(int(2 * itemsCount)) + defer putLensBuffer(lb) + + prefixLens := lb.lens[:itemsCount] + lens := lb.lens[itemsCount:] + + is := encoding.GetUint64s(int(itemsCount) - 1) + defer encoding.PutUint64s(is) + + // Unmarshal prefixLens + tail, err := encoding.UnmarshalVarUint64s(is.A, bb.B) + if err != nil { + return fmt.Errorf("cannot unmarshal prefixLens from lensData: %s", err) + } + prefixLens[0] = 0 + for i, xLen := range is.A { + prefixLens[i+1] = xLen ^ prefixLens[i] + } + + // Unmarshal lens + tail, err = encoding.UnmarshalVarUint64s(is.A, tail) + if err != nil { + return fmt.Errorf("cannot unmarshal lens from lensData: %s", err) + } + if len(tail) > 0 { + return fmt.Errorf("unexpected tail left unmarshaling %d lens; tail size=%d; contents=%X", itemsCount, len(tail), tail) + } + lens[0] = uint64(len(firstItem) - len(commonPrefix)) + dataLen := uint64(len(commonPrefix) * int(itemsCount)) + dataLen += lens[0] + for i, xLen := range is.A { + itemLen := xLen ^ lens[i] + lens[i+1] = itemLen + dataLen += itemLen + } + + // Unmarshal items data. + bb.B, err = encoding.DecompressZSTD(bb.B[:0], sb.itemsData) + if err != nil { + return fmt.Errorf("cannot decompress lensData: %s", err) + } + data := bytesutil.Resize(ib.data, maxInmemoryBlockSize) + if n := int(itemsCount) - cap(ib.items); n > 0 { + ib.items = append(ib.items[:cap(ib.items)], make([][]byte, n)...) + } + ib.items = ib.items[:itemsCount] + data = append(data[:0], firstItem...) + ib.items[0] = data + prevItem := data[len(commonPrefix):] + b := bb.B + for i := 1; i < int(itemsCount); i++ { + itemLen := lens[i] + prefixLen := prefixLens[i] + if prefixLen > itemLen { + return fmt.Errorf("prefixLen=%d exceeds itemLen=%d", prefixLen, itemLen) + } + suffixLen := itemLen - prefixLen + if uint64(len(b)) < suffixLen { + return fmt.Errorf("not enough data for decoding item from itemsData; want %d bytes; remained %d bytes", suffixLen, len(b)) + } + data = append(data, commonPrefix...) + + if prefixLen > uint64(len(prevItem)) { + return fmt.Errorf("prefixLen cannot exceed %d; got %d", len(prevItem), prefixLen) + } + data = append(data, prevItem[:prefixLen]...) + data = append(data, b[:suffixLen]...) + item := data[len(data)-int(itemLen)-len(commonPrefix):] + ib.items[i] = item + b = b[suffixLen:] + prevItem = item[len(commonPrefix):] + } + if len(b) > 0 { + return fmt.Errorf("unexpected tail left after itemsData with len %d: %q", len(b), b) + } + if uint64(len(data)) != dataLen { + return fmt.Errorf("unexpected data len; got %d; want %d", len(data), dataLen) + } + if !ib.isSorted() { + return fmt.Errorf("decoded data block contains unsorted items; items:\n%s", ib.debugItemsString()) + } + ib.data = data + return nil +} + +var bbPool bytesutil.ByteBufferPool + +func (ib *inmemoryBlock) marshalDataPlain(sb *storageBlock) { + // Marshal items data. + // There is no need in marshaling the first item, since it is returned + // to the caller in marshalData. + cpLen := len(ib.commonPrefix) + b := sb.itemsData[:0] + for _, item := range ib.items[1:] { + b = append(b, item[cpLen:]...) + } + sb.itemsData = b + + // Marshal length data. + b = sb.lensData[:0] + for _, item := range ib.items[1:] { + b = encoding.MarshalUint64(b, uint64(len(item)-cpLen)) + } + sb.lensData = b +} + +func (ib *inmemoryBlock) unmarshalDataPlain(sb *storageBlock, firstItem []byte, itemsCount uint32) error { + commonPrefix := ib.commonPrefix + + // Unmarshal lens data. + lb := getLensBuffer(int(itemsCount)) + defer putLensBuffer(lb) + + lb.lens[0] = uint64(len(firstItem) - len(commonPrefix)) + b := sb.lensData + for i := 1; i < int(itemsCount); i++ { + if len(b) < 8 { + return fmt.Errorf("too short tail for decoding len from lensData; got %d bytes; want at least %d bytes", len(b), 8) + } + iLen := encoding.UnmarshalUint64(b) + b = b[8:] + lb.lens[i] = iLen + } + if len(b) > 0 { + return fmt.Errorf("unexpected tail left after lensData with len %d: %q", len(b), b) + } + + // Unmarshal items data. + ib.data = bytesutil.Resize(ib.data, len(firstItem)+len(sb.itemsData)+len(commonPrefix)*int(itemsCount)) + ib.data = append(ib.data[:0], firstItem...) + ib.items = append(ib.items[:0], ib.data) + + b = sb.itemsData + for i := 1; i < int(itemsCount); i++ { + itemLen := lb.lens[i] + if uint64(len(b)) < itemLen { + return fmt.Errorf("not enough data for decoding item from itemsData; want %d bytes; remained %d bytes", itemLen, len(b)) + } + ib.data = append(ib.data, commonPrefix...) + ib.data = append(ib.data, b[:itemLen]...) + item := ib.data[len(ib.data)-int(itemLen)-len(commonPrefix):] + ib.items = append(ib.items, item) + b = b[itemLen:] + } + if len(b) > 0 { + return fmt.Errorf("unexpected tail left after itemsData with len %d: %q", len(b), b) + } + + return nil +} + +type lensBuffer struct { + lens []uint64 +} + +var lensBufferPool sync.Pool + +func getLensBuffer(n int) *lensBuffer { + v := lensBufferPool.Get() + if v == nil { + v = &lensBuffer{} + } + lb := v.(*lensBuffer) + if nn := n - cap(lb.lens); nn > 0 { + lb.lens = append(lb.lens[:cap(lb.lens)], make([]uint64, nn)...) + } + lb.lens = lb.lens[:n] + return lb +} + +func putLensBuffer(lb *lensBuffer) { + lensBufferPool.Put(lb) +} + +func getInmemoryBlock() *inmemoryBlock { + v := ibPool.Get() + if v == nil { + return &inmemoryBlock{} + } + return v.(*inmemoryBlock) +} + +func putInmemoryBlock(ib *inmemoryBlock) { + ib.Reset() + ibPool.Put(ib) +} + +var ibPool sync.Pool diff --git a/lib/mergeset/encoding_test.go b/lib/mergeset/encoding_test.go new file mode 100644 index 000000000..549a45d65 --- /dev/null +++ b/lib/mergeset/encoding_test.go @@ -0,0 +1,175 @@ +package mergeset + +import ( + "math/rand" + "reflect" + "sort" + "sync" + "testing" + "testing/quick" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +func TestInmemoryBlockAdd(t *testing.T) { + var ib inmemoryBlock + + for i := 0; i < 30; i++ { + var items []string + totalLen := 0 + ib.Reset() + + // Fill ib. + for j := 0; j < i*100+1; j++ { + s := getRandomBytes() + if !ib.Add(s) { + // ib is full. + break + } + items = append(items, string(s)) + totalLen += len(s) + } + + // Verify all the items are added. + if len(ib.items) != len(items) { + t.Fatalf("unexpected number of items added; got %d; want %d", len(ib.items), len(items)) + } + if len(ib.data) != totalLen { + t.Fatalf("unexpected ib.data len; got %d; want %d", len(ib.data), totalLen) + } + for j, item := range ib.items { + if items[j] != string(item) { + t.Fatalf("unexpected item at index %d out of %d, loop %d\ngot\n%X\nwant\n%X", j, len(items), i, item, items[j]) + } + } + } +} + +func TestInmemoryBlockSort(t *testing.T) { + var ib inmemoryBlock + + for i := 0; i < 100; i++ { + var items []string + totalLen := 0 + ib.Reset() + + // Fill ib. + for j := 0; j < rand.Intn(1500); j++ { + s := getRandomBytes() + if !ib.Add(s) { + // ib is full. + break + } + items = append(items, string(s)) + totalLen += len(s) + } + + // Sort ib. + ib.sort() + sort.Strings(items) + + // Verify items are sorted. + if len(ib.items) != len(items) { + t.Fatalf("unexpected number of items added; got %d; want %d", len(ib.items), len(items)) + } + if len(ib.data) != totalLen { + t.Fatalf("unexpected ib.data len; got %d; want %d", len(ib.data), totalLen) + } + for j, item := range ib.items { + if items[j] != string(item) { + t.Fatalf("unexpected item at index %d out of %d, loop %d\ngot\n%X\nwant\n%X", j, len(items), i, item, items[j]) + } + } + } +} + +func TestInmemoryBlockMarshalUnmarshal(t *testing.T) { + var ib, ib2 inmemoryBlock + var sb storageBlock + var firstItem, commonPrefix []byte + var itemsLen uint32 + var mt marshalType + + for i := 0; i < 1000; i++ { + var items []string + totalLen := 0 + ib.Reset() + + // Fill ib. + itemsCount := 2 * (rand.Intn(i+1) + 1) + for j := 0; j < itemsCount/2; j++ { + s := getRandomBytes() + s = []byte("prefix " + string(s)) + if !ib.Add(s) { + // ib is full. + break + } + items = append(items, string(s)) + totalLen += len(s) + + s = getRandomBytes() + if !ib.Add(s) { + // ib is full + break + } + items = append(items, string(s)) + totalLen += len(s) + } + + // Marshal ib. + sort.Strings(items) + firstItem, commonPrefix, itemsLen, mt = ib.MarshalUnsortedData(&sb, firstItem[:0], commonPrefix[:0], 0) + if int(itemsLen) != len(ib.items) { + t.Fatalf("unexpected number of items marshaled; got %d; want %d", itemsLen, len(ib.items)) + } + if string(firstItem) != string(ib.items[0]) { + t.Fatalf("unexpected the first item\ngot\n%q\nwant\n%q", firstItem, ib.items[0]) + } + if err := checkMarshalType(mt); err != nil { + t.Fatalf("invalid mt: %s", err) + } + + // Unmarshal ib. + if err := ib2.UnmarshalData(&sb, firstItem, commonPrefix, itemsLen, mt); err != nil { + t.Fatalf("cannot unmarshal data for firstItem=%q, commonPrefix=%q, itemsLen=%d, mt=%d: %s", + firstItem, commonPrefix, itemsLen, mt, err) + } + + // Verify all the items are sorted and unmarshaled. + if len(ib2.items) != len(items) { + t.Fatalf("unexpected number of items unmarshaled; got %d; want %d", len(ib2.items), len(items)) + } + if len(ib2.data) != totalLen { + t.Fatalf("unexpected ib.data len; got %d; want %d", len(ib2.data), totalLen) + } + for j := range items { + if len(items[j]) != len(ib2.items[j]) { + t.Fatalf("items length mismatch at index %d out of %d, loop %d\ngot\n(len=%d) %X\nwant\n(len=%d) %X", + j, len(items), i, len(ib2.items[j]), ib2.items[j], len(items[j]), items[j]) + } + } + for j, item := range ib2.items { + if items[j] != string(item) { + t.Fatalf("unexpected item at index %d out of %d, loop %d\ngot\n(len=%d) %X\nwant\n(len=%d) %X", + j, len(items), i, len(item), item, len(items[j]), items[j]) + } + } + } +} + +func getRandomBytes() []byte { + rndLock.Lock() + iv, ok := quick.Value(bytesType, rnd) + rndLock.Unlock() + if !ok { + logger.Panicf("error in quick.Value when generating random string") + } + return iv.Interface().([]byte) +} + +var bytesType = reflect.TypeOf([]byte(nil)) + +var ( + rnd = rand.New(rand.NewSource(1)) + rndLock sync.Mutex +) diff --git a/lib/mergeset/encoding_timing_test.go b/lib/mergeset/encoding_timing_test.go new file mode 100644 index 000000000..10774fc08 --- /dev/null +++ b/lib/mergeset/encoding_timing_test.go @@ -0,0 +1,59 @@ +package mergeset + +import ( + "fmt" + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +func BenchmarkInmemoryBlockMarshal(b *testing.B) { + const itemsCount = 1000 + var ibSrc inmemoryBlock + for i := 0; i < itemsCount; i++ { + item := []byte(fmt.Sprintf("key %d", i)) + if !ibSrc.Add(item) { + b.Fatalf("cannot add more than %d items", i) + } + } + ibSrc.sort() + + b.ResetTimer() + b.SetBytes(itemsCount) + b.ReportAllocs() + b.RunParallel(func(pb *testing.PB) { + var sb storageBlock + var firstItem, commonPrefix []byte + var n uint32 + for pb.Next() { + firstItem, commonPrefix, n, _ = ibSrc.MarshalUnsortedData(&sb, firstItem[:0], commonPrefix[:0], 0) + if int(n) != itemsCount { + logger.Panicf("invalid number of items marshaled; got %d; want %d", n, itemsCount) + } + } + }) +} + +func BenchmarkInmemoryBlockUnmarshal(b *testing.B) { + var ibSrc inmemoryBlock + for i := 0; i < 1000; i++ { + item := []byte(fmt.Sprintf("key %d", i)) + if !ibSrc.Add(item) { + b.Fatalf("cannot add more than %d items", i) + } + } + var sbSrc storageBlock + firstItem, commonPrefix, itemsCount, mt := ibSrc.MarshalUnsortedData(&sbSrc, nil, nil, 0) + + b.ResetTimer() + b.SetBytes(int64(itemsCount)) + b.ReportAllocs() + b.RunParallel(func(pb *testing.PB) { + var ib inmemoryBlock + for pb.Next() { + if err := ib.UnmarshalData(&sbSrc, firstItem, commonPrefix, itemsCount, mt); err != nil { + logger.Panicf("cannot unmarshal inmemoryBlock: %s", err) + } + } + }) +} diff --git a/lib/mergeset/inmemory_part.go b/lib/mergeset/inmemory_part.go new file mode 100644 index 000000000..897efa1c6 --- /dev/null +++ b/lib/mergeset/inmemory_part.go @@ -0,0 +1,107 @@ +package mergeset + +import ( + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +type inmemoryPart struct { + ph partHeader + sb storageBlock + bh blockHeader + mr metaindexRow + + unpackedIndexBlockBuf []byte + packedIndexBlockBuf []byte + + unpackedMetaindexBuf []byte + packedMetaindexBuf []byte + + metaindexData bytesutil.ByteBuffer + indexData bytesutil.ByteBuffer + itemsData bytesutil.ByteBuffer + lensData bytesutil.ByteBuffer +} + +func (ip *inmemoryPart) Reset() { + ip.ph.Reset() + ip.sb.Reset() + ip.bh.Reset() + ip.mr.Reset() + + ip.unpackedIndexBlockBuf = ip.unpackedIndexBlockBuf[:0] + ip.packedIndexBlockBuf = ip.packedIndexBlockBuf[:0] + + ip.unpackedMetaindexBuf = ip.unpackedMetaindexBuf[:0] + ip.packedMetaindexBuf = ip.packedMetaindexBuf[:0] + + ip.metaindexData.Reset() + ip.indexData.Reset() + ip.itemsData.Reset() + ip.lensData.Reset() +} + +// Init initializes ip from ib. +func (ip *inmemoryPart) Init(ib *inmemoryBlock) { + ip.Reset() + + // Use the minimum possible compressLevel for compressing inmemoryPart, + // since it will be merged into file part soon. + compressLevel := 0 + ip.bh.firstItem, ip.bh.commonPrefix, ip.bh.itemsCount, ip.bh.marshalType = ib.MarshalUnsortedData(&ip.sb, ip.bh.firstItem[:0], ip.bh.commonPrefix[:0], compressLevel) + + ip.ph.itemsCount = uint64(len(ib.items)) + ip.ph.blocksCount = 1 + ip.ph.firstItem = append(ip.ph.firstItem[:0], ib.items[0]...) + ip.ph.lastItem = append(ip.ph.lastItem[:0], ib.items[len(ib.items)-1]...) + + fs.MustWriteData(&ip.itemsData, ip.sb.itemsData) + ip.bh.itemsBlockOffset = 0 + ip.bh.itemsBlockSize = uint32(len(ip.sb.itemsData)) + + fs.MustWriteData(&ip.lensData, ip.sb.lensData) + ip.bh.lensBlockOffset = 0 + ip.bh.lensBlockSize = uint32(len(ip.sb.lensData)) + + ip.unpackedIndexBlockBuf = ip.bh.Marshal(ip.unpackedIndexBlockBuf[:0]) + ip.packedIndexBlockBuf = encoding.CompressZSTDLevel(ip.packedIndexBlockBuf[:0], ip.unpackedIndexBlockBuf, 0) + fs.MustWriteData(&ip.indexData, ip.packedIndexBlockBuf) + + ip.mr.firstItem = append(ip.mr.firstItem[:0], ip.bh.firstItem...) + ip.mr.blockHeadersCount = 1 + ip.mr.indexBlockOffset = 0 + ip.mr.indexBlockSize = uint32(len(ip.packedIndexBlockBuf)) + ip.unpackedMetaindexBuf = ip.mr.Marshal(ip.unpackedMetaindexBuf[:0]) + ip.packedMetaindexBuf = encoding.CompressZSTDLevel(ip.packedMetaindexBuf[:0], ip.unpackedMetaindexBuf, 0) + fs.MustWriteData(&ip.metaindexData, ip.packedMetaindexBuf) +} + +// It is safe calling NewPart multiple times. +// It is unsafe re-using ip while the returned part is in use. +func (ip *inmemoryPart) NewPart() *part { + ph := ip.ph + p, err := newPart(&ph, "", ip.metaindexData.NewReader(), &ip.indexData, &ip.itemsData, &ip.lensData) + if err != nil { + logger.Panicf("BUG: cannot create a part from inmemoryPart: %s", err) + } + return p +} + +func getInmemoryPart() *inmemoryPart { + v := ipPool.Get() + if v == nil { + return &inmemoryPart{} + } + return v.(*inmemoryPart) +} + +func putInmemoryPart(ip *inmemoryPart) { + ip.Reset() + ipPool.Put(ip) +} + +var ipPool sync.Pool diff --git a/lib/mergeset/merge.go b/lib/mergeset/merge.go new file mode 100644 index 000000000..039ad34d7 --- /dev/null +++ b/lib/mergeset/merge.go @@ -0,0 +1,177 @@ +package mergeset + +import ( + "container/heap" + "fmt" + "sync" + "sync/atomic" +) + +// mergeBlockStreams merges bsrs and writes result to bsw. +// +// It also fills ph. +// +// The function immediately returns when stopCh is closed. +// +// It also atomically adds the number of items merged to itemsMerged. +func mergeBlockStreams(ph *partHeader, bsw *blockStreamWriter, bsrs []*blockStreamReader, stopCh <-chan struct{}, itemsMerged *uint64) error { + bsm := bsmPool.Get().(*blockStreamMerger) + if err := bsm.Init(bsrs); err != nil { + return fmt.Errorf("cannot initialize blockStreamMerger: %s", err) + } + err := bsm.Merge(bsw, ph, stopCh, itemsMerged) + bsm.reset() + bsmPool.Put(bsm) + bsw.MustClose() + if err == nil { + return nil + } + if err == errForciblyStopped { + return err + } + return fmt.Errorf("cannot merge block streams: %s", err) +} + +var bsmPool = &sync.Pool{ + New: func() interface{} { + return &blockStreamMerger{} + }, +} + +type blockStreamMerger struct { + bsrHeap bsrHeap + + // ib is a scratch block with pending items. + ib inmemoryBlock + + phFirstItemCaught bool +} + +func (bsm *blockStreamMerger) reset() { + for i := range bsm.bsrHeap { + bsm.bsrHeap[i] = nil + } + bsm.bsrHeap = bsm.bsrHeap[:0] + bsm.ib.Reset() + + bsm.phFirstItemCaught = false +} + +func (bsm *blockStreamMerger) Init(bsrs []*blockStreamReader) error { + bsm.reset() + for _, bsr := range bsrs { + if bsr.Next() { + bsm.bsrHeap = append(bsm.bsrHeap, bsr) + } + + if err := bsr.Error(); err != nil { + return fmt.Errorf("cannot obtain the next block from blockStreamReader %q: %s", bsr.path, err) + } + } + heap.Init(&bsm.bsrHeap) + + if len(bsm.bsrHeap) == 0 { + return fmt.Errorf("bsrHeap cannot be empty") + } + + return nil +} + +var errForciblyStopped = fmt.Errorf("forcibly stopped") + +func (bsm *blockStreamMerger) Merge(bsw *blockStreamWriter, ph *partHeader, stopCh <-chan struct{}, itemsMerged *uint64) error { +again: + if len(bsm.bsrHeap) == 0 { + // Write the last (maybe incomplete) inmemoryBlock to bsw. + bsm.flushIB(bsw, ph, itemsMerged) + return nil + } + + select { + case <-stopCh: + return errForciblyStopped + default: + } + + bsr := heap.Pop(&bsm.bsrHeap).(*blockStreamReader) + + if !bsm.phFirstItemCaught { + ph.firstItem = append(ph.firstItem[:0], bsr.Block.items[0]...) + bsm.phFirstItemCaught = true + } + + var nextItem []byte + hasNextItem := false + if len(bsm.bsrHeap) > 0 { + nextItem = bsm.bsrHeap[0].bh.firstItem + hasNextItem = true + } + for bsr.blockItemIdx < len(bsr.Block.items) && (!hasNextItem || string(bsr.Block.items[bsr.blockItemIdx]) <= string(nextItem)) { + if bsm.ib.Add(bsr.Block.items[bsr.blockItemIdx]) { + bsr.blockItemIdx++ + continue + } + + // The bsm.ib is full. Flush it to bsw and continue. + bsm.flushIB(bsw, ph, itemsMerged) + } + if bsr.blockItemIdx == len(bsr.Block.items) { + // bsr.Block is fully read. Proceed to the next block. + if bsr.Next() { + heap.Push(&bsm.bsrHeap, bsr) + goto again + } + if err := bsr.Error(); err != nil { + return fmt.Errorf("cannot read storageBlock: %s", err) + } + goto again + } + + // The next item in the bsr.Block exceeds nextItem. + // Adjust bsr.bh.firstItem and return bsr to heap. + bsr.bh.firstItem = append(bsr.bh.firstItem[:0], bsr.Block.items[bsr.blockItemIdx]...) + heap.Push(&bsm.bsrHeap, bsr) + goto again +} + +func (bsm *blockStreamMerger) flushIB(bsw *blockStreamWriter, ph *partHeader, itemsMerged *uint64) { + if len(bsm.ib.items) == 0 { + // Nothing to flush. + return + } + itemsCount := uint64(len(bsm.ib.items)) + ph.itemsCount += itemsCount + atomic.AddUint64(itemsMerged, itemsCount) + ph.lastItem = append(ph.lastItem[:0], bsm.ib.items[len(bsm.ib.items)-1]...) + bsw.WriteBlock(&bsm.ib) + bsm.ib.Reset() + ph.blocksCount++ +} + +type bsrHeap []*blockStreamReader + +func (bh *bsrHeap) Len() int { + return len(*bh) +} + +func (bh *bsrHeap) Swap(i, j int) { + x := *bh + x[i], x[j] = x[j], x[i] +} + +func (bh *bsrHeap) Less(i, j int) bool { + x := *bh + return string(x[i].bh.firstItem) < string(x[j].bh.firstItem) +} + +func (bh *bsrHeap) Pop() interface{} { + a := *bh + v := a[len(a)-1] + *bh = a[:len(a)-1] + return v +} + +func (bh *bsrHeap) Push(x interface{}) { + v := x.(*blockStreamReader) + *bh = append(*bh, v) +} diff --git a/lib/mergeset/merge_test.go b/lib/mergeset/merge_test.go new file mode 100644 index 000000000..8fb80023d --- /dev/null +++ b/lib/mergeset/merge_test.go @@ -0,0 +1,201 @@ +package mergeset + +import ( + "fmt" + "math/rand" + "reflect" + "sort" + "testing" + "time" +) + +func TestMergeBlockStreams(t *testing.T) { + for _, blocksToMerge := range []int{1, 2, 3, 4, 5, 10, 20} { + t.Run(fmt.Sprintf("blocks-%d", blocksToMerge), func(t *testing.T) { + for _, maxItemsPerBlock := range []int{1, 2, 10, 100, 1000, 10000} { + t.Run(fmt.Sprintf("maxItemsPerBlock-%d", maxItemsPerBlock), func(t *testing.T) { + testMergeBlockStreams(t, blocksToMerge, maxItemsPerBlock) + }) + } + }) + } +} + +func TestMultilevelMerge(t *testing.T) { + // Prepare blocks to merge. + bsrs, items := newTestInmemoryBlockStreamReaders(10, 4000) + var itemsMerged uint64 + + // First level merge + var dstIP1 inmemoryPart + var bsw1 blockStreamWriter + bsw1.InitFromInmemoryPart(&dstIP1, 0) + if err := mergeBlockStreams(&dstIP1.ph, &bsw1, bsrs[:5], nil, &itemsMerged); err != nil { + t.Fatalf("cannot merge first level part 1: %s", err) + } + + var dstIP2 inmemoryPart + var bsw2 blockStreamWriter + bsw2.InitFromInmemoryPart(&dstIP2, 0) + if err := mergeBlockStreams(&dstIP2.ph, &bsw2, bsrs[5:], nil, &itemsMerged); err != nil { + t.Fatalf("cannot merge first level part 2: %s", err) + } + + if itemsMerged != uint64(len(items)) { + t.Fatalf("unexpected itemsMerged; got %d; want %d", itemsMerged, len(items)) + } + + // Second level merge (aka final merge) + itemsMerged = 0 + var dstIP inmemoryPart + var bsw blockStreamWriter + bsrsTop := []*blockStreamReader{ + newTestBlockStreamReader(&dstIP1), + newTestBlockStreamReader(&dstIP2), + } + bsw.InitFromInmemoryPart(&dstIP, 0) + if err := mergeBlockStreams(&dstIP.ph, &bsw, bsrsTop, nil, &itemsMerged); err != nil { + t.Fatalf("cannot merge second level: %s", err) + } + if itemsMerged != uint64(len(items)) { + t.Fatalf("unexpected itemsMerged after final merge; got %d; want %d", itemsMerged, len(items)) + } + + // Verify the resulting part (dstIP) contains all the items + // in the correct order. + if err := testCheckItems(&dstIP, items); err != nil { + t.Fatalf("error checking items: %s", err) + } +} + +func TestMergeForciblyStop(t *testing.T) { + bsrs, _ := newTestInmemoryBlockStreamReaders(20, 4000) + var dstIP inmemoryPart + var bsw blockStreamWriter + bsw.InitFromInmemoryPart(&dstIP, 0) + ch := make(chan struct{}) + var itemsMerged uint64 + close(ch) + if err := mergeBlockStreams(&dstIP.ph, &bsw, bsrs, ch, &itemsMerged); err != errForciblyStopped { + t.Fatalf("unexpected error during merge: got %v; want %v", err, errForciblyStopped) + } + if itemsMerged != 0 { + t.Fatalf("unexpected itemsMerged; got %d; want %d", itemsMerged, 0) + } +} + +func testMergeBlockStreams(t *testing.T, blocksToMerge, maxItemsPerBlock int) { + t.Helper() + + if err := testMergeBlockStreamsSerial(blocksToMerge, maxItemsPerBlock); err != nil { + t.Fatalf("unexpected error in serial test: %s", err) + } + + const concurrency = 3 + ch := make(chan error, concurrency) + for i := 0; i < concurrency; i++ { + go func() { + ch <- testMergeBlockStreamsSerial(blocksToMerge, maxItemsPerBlock) + }() + } + + for i := 0; i < concurrency; i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error in concurrent test: %s", err) + } + case <-time.After(10 * time.Second): + t.Fatalf("timeout in concurrent test") + } + } +} + +func testMergeBlockStreamsSerial(blocksToMerge, maxItemsPerBlock int) error { + // Prepare blocks to merge. + bsrs, items := newTestInmemoryBlockStreamReaders(blocksToMerge, maxItemsPerBlock) + + // Merge blocks. + var itemsMerged uint64 + var dstIP inmemoryPart + var bsw blockStreamWriter + bsw.InitFromInmemoryPart(&dstIP, 0) + if err := mergeBlockStreams(&dstIP.ph, &bsw, bsrs, nil, &itemsMerged); err != nil { + return fmt.Errorf("cannot merge block streams: %s", err) + } + if itemsMerged != uint64(len(items)) { + return fmt.Errorf("unexpected itemsMerged; got %d; want %d", itemsMerged, len(items)) + } + + // Verify the resulting part (dstIP) contains all the items + // in the correct order. + if err := testCheckItems(&dstIP, items); err != nil { + return fmt.Errorf("error checking items: %s", err) + } + return nil +} + +func testCheckItems(dstIP *inmemoryPart, items []string) error { + if int(dstIP.ph.itemsCount) != len(items) { + return fmt.Errorf("unexpected number of items in the part; got %d; want %d", dstIP.ph.itemsCount, len(items)) + } + if string(dstIP.ph.firstItem) != string(items[0]) { + return fmt.Errorf("unexpected first item; got %q; want %q", dstIP.ph.firstItem, items[0]) + } + if string(dstIP.ph.lastItem) != string(items[len(items)-1]) { + return fmt.Errorf("unexpected last item; got %q; want %q", dstIP.ph.lastItem, items[len(items)-1]) + } + + var dstItems []string + dstBsr := newTestBlockStreamReader(dstIP) + for dstBsr.Next() { + bh := dstBsr.bh + if int(bh.itemsCount) != len(dstBsr.Block.items) { + return fmt.Errorf("unexpected number of items in the block; got %d; want %d", len(dstBsr.Block.items), bh.itemsCount) + } + if bh.itemsCount <= 0 { + return fmt.Errorf("unexpected empty block") + } + if string(bh.firstItem) != string(dstBsr.Block.items[0]) { + return fmt.Errorf("unexpected blockHeader.firstItem; got %q; want %q", bh.firstItem, dstBsr.Block.items[0]) + } + for _, item := range dstBsr.Block.items { + dstItems = append(dstItems, string(item)) + } + } + if err := dstBsr.Error(); err != nil { + return fmt.Errorf("unexpected error in dstBsr: %s", err) + } + if !reflect.DeepEqual(items, dstItems) { + return fmt.Errorf("unequal items\ngot\n%q\nwant\n%q", dstItems, items) + } + return nil +} + +func newTestInmemoryBlockStreamReaders(blocksCount, maxItemsPerBlock int) ([]*blockStreamReader, []string) { + var items []string + var bsrs []*blockStreamReader + for i := 0; i < blocksCount; i++ { + var ib inmemoryBlock + itemsPerBlock := rand.Intn(maxItemsPerBlock) + 1 + for j := 0; j < itemsPerBlock; j++ { + item := getRandomBytes() + if !ib.Add(item) { + break + } + items = append(items, string(item)) + } + var ip inmemoryPart + ip.Init(&ib) + bsr := newTestBlockStreamReader(&ip) + bsrs = append(bsrs, bsr) + } + sort.Strings(items) + return bsrs, items +} + +func newTestBlockStreamReader(ip *inmemoryPart) *blockStreamReader { + var bsr blockStreamReader + bsr.InitFromInmemoryPart(ip) + return &bsr +} diff --git a/lib/mergeset/metaindex_row.go b/lib/mergeset/metaindex_row.go new file mode 100644 index 000000000..40ba4acda --- /dev/null +++ b/lib/mergeset/metaindex_row.go @@ -0,0 +1,123 @@ +package mergeset + +import ( + "fmt" + "io" + "io/ioutil" + "sort" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" +) + +// metaindexRow describes a block of blockHeaders aka index block. +type metaindexRow struct { + // First item in the first block. + // It is used for fast lookup of the required index block. + firstItem []byte + + // The number of blockHeaders the block contains. + blockHeadersCount uint32 + + // The offset of the block in the index file. + indexBlockOffset uint64 + + // The size of the block in the index file. + indexBlockSize uint32 +} + +func (mr *metaindexRow) Reset() { + mr.firstItem = mr.firstItem[:0] + mr.blockHeadersCount = 0 + mr.indexBlockOffset = 0 + mr.indexBlockSize = 0 +} + +func (mr *metaindexRow) Marshal(dst []byte) []byte { + dst = encoding.MarshalBytes(dst, mr.firstItem) + dst = encoding.MarshalUint32(dst, mr.blockHeadersCount) + dst = encoding.MarshalUint64(dst, mr.indexBlockOffset) + dst = encoding.MarshalUint32(dst, mr.indexBlockSize) + return dst +} + +func (mr *metaindexRow) Unmarshal(src []byte) ([]byte, error) { + // Unmarshal firstItem + tail, fi, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal firstItem: %s", err) + } + mr.firstItem = append(mr.firstItem[:0], fi...) + src = tail + + // Unmarshal blockHeadersCount + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal blockHeadersCount from %d bytes; need at least %d bytes", len(src), 4) + } + mr.blockHeadersCount = encoding.UnmarshalUint32(src) + src = src[4:] + + // Unmarshal indexBlockOffset + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal indexBlockOffset from %d bytes; need at least %d bytes", len(src), 8) + } + mr.indexBlockOffset = encoding.UnmarshalUint64(src) + src = src[8:] + + // Unmarshal indexBlockSize + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal indexBlockSize from %d bytes; need at least %d bytes", len(src), 4) + } + mr.indexBlockSize = encoding.UnmarshalUint32(src) + src = src[4:] + + if mr.blockHeadersCount <= 0 { + return src, fmt.Errorf("blockHeadersCount must be bigger than 0; got %d", mr.blockHeadersCount) + } + if mr.indexBlockSize > 2*maxIndexBlockSize { + return src, fmt.Errorf("too big indexBlockSize: %d; cannot exceed %d", mr.indexBlockSize, 2*maxIndexBlockSize) + } + + return src, nil +} + +func unmarshalMetaindexRows(dst []metaindexRow, r io.Reader) ([]metaindexRow, error) { + // It is ok to read all the metaindex in memory, + // since it is quite small. + compressedData, err := ioutil.ReadAll(r) + if err != nil { + return dst, fmt.Errorf("cannot read metaindex data: %s", err) + } + data, err := encoding.DecompressZSTD(nil, compressedData) + if err != nil { + return dst, fmt.Errorf("cannot decompress metaindex data with size %d bytes: %s", len(compressedData), err) + } + + dstLen := len(dst) + for len(data) > 0 { + if len(dst) < cap(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, metaindexRow{}) + } + mr := &dst[len(dst)-1] + tail, err := mr.Unmarshal(data) + if err != nil { + return dst, fmt.Errorf("cannot unmarshal metaindexRow #%d from metaindex data: %s", len(dst)-dstLen, err) + } + data = tail + } + if dstLen == len(dst) { + return dst, fmt.Errorf("expecting non-zero metaindex rows; got zero") + } + + // Make sure metaindexRows are sorted by firstItem. + tmp := dst[dstLen:] + ok := sort.SliceIsSorted(tmp, func(i, j int) bool { + return string(tmp[i].firstItem) < string(tmp[j].firstItem) + }) + if !ok { + return dst, fmt.Errorf("metaindex %d rows aren't sorted by firstItem", len(tmp)) + } + + return dst, nil +} diff --git a/lib/mergeset/part.go b/lib/mergeset/part.go new file mode 100644 index 000000000..da0ba01c2 --- /dev/null +++ b/lib/mergeset/part.go @@ -0,0 +1,389 @@ +package mergeset + +import ( + "fmt" + "path/filepath" + "sync" + "sync/atomic" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" +) + +func getMaxCachedIndexBlocksPerPart() int { + maxCachedIndexBlocksPerPartOnce.Do(func() { + n := memory.Allowed() / 1024 / 1024 / 2 + if n == 0 { + n = 10 + } + maxCachedIndexBlocksPerPart = n + }) + return maxCachedIndexBlocksPerPart +} + +var ( + maxCachedIndexBlocksPerPart int + maxCachedIndexBlocksPerPartOnce sync.Once +) + +func getMaxCachedInmemoryBlocksPerPart() int { + maxCachedInmemoryBlocksPerPartOnce.Do(func() { + n := memory.Allowed() / 1024 / 1024 / 2 + if n == 0 { + n = 10 + } + maxCachedInmemoryBlocksPerPart = n + }) + return maxCachedInmemoryBlocksPerPart +} + +var ( + maxCachedInmemoryBlocksPerPart int + maxCachedInmemoryBlocksPerPartOnce sync.Once +) + +type part struct { + ph partHeader + + path string + + mrs []metaindexRow + + indexFile fs.ReadAtCloser + itemsFile fs.ReadAtCloser + lensFile fs.ReadAtCloser + + idxbCache indexBlockCache + ibCache inmemoryBlockCache +} + +func openFilePart(path string) (*part, error) { + path = filepath.Clean(path) + + var ph partHeader + if err := ph.ParseFromPath(path); err != nil { + return nil, fmt.Errorf("cannot parse path to part: %s", err) + } + + metaindexPath := path + "/metaindex.bin" + metaindexFile, err := filestream.Open(metaindexPath, true) + if err != nil { + return nil, fmt.Errorf("cannot open %q: %s", metaindexPath, err) + } + + indexPath := path + "/index.bin" + indexFile, err := fs.OpenReaderAt(indexPath) + if err != nil { + metaindexFile.MustClose() + return nil, fmt.Errorf("cannot open %q: %s", indexPath, err) + } + + itemsPath := path + "/items.bin" + itemsFile, err := fs.OpenReaderAt(itemsPath) + if err != nil { + metaindexFile.MustClose() + indexFile.MustClose() + return nil, fmt.Errorf("cannot open %q: %s", itemsPath, err) + } + + lensPath := path + "/lens.bin" + lensFile, err := fs.OpenReaderAt(lensPath) + if err != nil { + metaindexFile.MustClose() + indexFile.MustClose() + itemsFile.MustClose() + return nil, fmt.Errorf("cannot open %q: %s", lensPath, err) + } + + return newPart(&ph, path, metaindexFile, indexFile, itemsFile, lensFile) +} + +func newPart(ph *partHeader, path string, metaindexReader filestream.ReadCloser, indexFile, itemsFile, lensFile fs.ReadAtCloser) (*part, error) { + var errors []error + mrs, err := unmarshalMetaindexRows(nil, metaindexReader) + if err != nil { + errors = append(errors, fmt.Errorf("cannot unmarshal metaindexRows: %s", err)) + } + metaindexReader.MustClose() + + p := &part{ + path: path, + mrs: mrs, + + indexFile: indexFile, + itemsFile: itemsFile, + lensFile: lensFile, + } + p.ph.CopyFrom(ph) + p.idxbCache.Init() + p.ibCache.Init() + + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + err := fmt.Errorf("error opening part %s: %s", p.path, errors[0]) + p.MustClose() + return nil, err + } + return p, nil +} + +func (p *part) MustClose() { + p.indexFile.MustClose() + p.itemsFile.MustClose() + p.lensFile.MustClose() + + p.idxbCache.Reset() + p.ibCache.Reset() +} + +type indexBlock struct { + bhs []blockHeader +} + +func getIndexBlock() *indexBlock { + v := indexBlockPool.Get() + if v == nil { + return &indexBlock{} + } + return v.(*indexBlock) +} + +func putIndexBlock(idxb *indexBlock) { + idxb.bhs = idxb.bhs[:0] + indexBlockPool.Put(idxb) +} + +var indexBlockPool sync.Pool + +type indexBlockCache struct { + m map[uint64]*indexBlock + missesMap map[uint64]uint64 + mu sync.RWMutex + + requests uint64 + misses uint64 +} + +func (idxbc *indexBlockCache) Init() { + idxbc.m = make(map[uint64]*indexBlock) + idxbc.missesMap = make(map[uint64]uint64) + idxbc.requests = 0 + idxbc.misses = 0 +} + +func (idxbc *indexBlockCache) Reset() { + atomic.AddUint64(&indexBlockCacheRequests, idxbc.requests) + atomic.AddUint64(&indexBlockCacheMisses, idxbc.misses) + // It is safe returning idxbc.m to pool, since the Reset must be called + // when the idxbc entries are no longer accessed by concurrent goroutines. + for _, idxb := range idxbc.m { + putIndexBlock(idxb) + } + idxbc.Init() +} + +var ( + indexBlockCacheRequests uint64 + indexBlockCacheMisses uint64 +) + +func (idxbc *indexBlockCache) Get(k uint64) *indexBlock { + atomic.AddUint64(&idxbc.requests, 1) + idxbc.mu.RLock() + idxb := idxbc.m[k] + idxbc.mu.RUnlock() + + if idxb != nil { + return idxb + } + atomic.AddUint64(&idxbc.misses, 1) + idxbc.mu.Lock() + idxbc.missesMap[k]++ + idxbc.mu.Unlock() + return nil +} + +// Put puts idxb under the key k into idxbc. +// +// Returns true if the idxb has been put into idxbc. +func (idxbc *indexBlockCache) Put(k uint64, idxb *indexBlock) bool { + idxbc.mu.Lock() + + if idxbc.missesMap[k] < 2 { + // Do not pollute cache with infrequently accessed items, since they may + // evict frequently accessed items. + idxbc.mu.Unlock() + return false + } + + // Remove superflouos entries. + if overflow := len(idxbc.m) - getMaxCachedIndexBlocksPerPart(); overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(idxbc.m)) * 0.1) + for k := range idxbc.m { + // Do not return idxb to pool, since these entries may be used + // by concurrent goroutines. + delete(idxbc.m, k) + overflow-- + if overflow == 0 { + break + } + } + } + if overflow := len(idxbc.missesMap) - 8*getMaxCachedIndexBlocksPerPart(); overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(idxbc.missesMap)) * 0.1) + for k := range idxbc.missesMap { + delete(idxbc.missesMap, k) + overflow-- + if overflow == 0 { + break + } + } + } + + // Store the frequently accessed idxb in the cache. + delete(idxbc.missesMap, k) + idxbc.m[k] = idxb + idxbc.mu.Unlock() + return true +} + +func (idxbc *indexBlockCache) Len() uint64 { + idxbc.mu.RLock() + n := len(idxbc.m) + idxbc.mu.RUnlock() + return uint64(n) +} + +func (idxbc *indexBlockCache) Requests() uint64 { + return atomic.LoadUint64(&idxbc.requests) +} + +func (idxbc *indexBlockCache) Misses() uint64 { + return atomic.LoadUint64(&idxbc.misses) +} + +type inmemoryBlockCache struct { + m map[inmemoryBlockCacheKey]*inmemoryBlock + missesMap map[inmemoryBlockCacheKey]uint64 + mu sync.RWMutex + + requests uint64 + misses uint64 +} + +type inmemoryBlockCacheKey struct { + firstItem string + itemsBlockOffset uint64 +} + +func (ibck *inmemoryBlockCacheKey) Init(bh *blockHeader) { + ibck.firstItem = "" + if bh.itemsBlockSize == 0 { + ibck.firstItem = string(bh.firstItem) + } + ibck.itemsBlockOffset = bh.itemsBlockOffset +} + +func (ibc *inmemoryBlockCache) Init() { + ibc.m = make(map[inmemoryBlockCacheKey]*inmemoryBlock) + ibc.missesMap = make(map[inmemoryBlockCacheKey]uint64) + ibc.requests = 0 + ibc.misses = 0 +} + +func (ibc *inmemoryBlockCache) Reset() { + atomic.AddUint64(&inmemoryBlockCacheRequests, ibc.requests) + atomic.AddUint64(&inmemoryBlockCacheMisses, ibc.misses) + // It is safe returning ibc.m entries to pool, since the Reset function may be called + // only if no other goroutines access ibc entries. + for _, ib := range ibc.m { + putInmemoryBlock(ib) + } + ibc.Init() +} + +var ( + inmemoryBlockCacheRequests uint64 + inmemoryBlockCacheMisses uint64 +) + +func (ibc *inmemoryBlockCache) Get(k inmemoryBlockCacheKey) *inmemoryBlock { + atomic.AddUint64(&ibc.requests, 1) + + ibc.mu.RLock() + ib := ibc.m[k] + ibc.mu.RUnlock() + + if ib != nil { + return ib + } + atomic.AddUint64(&ibc.misses, 1) + ibc.mu.Lock() + ibc.missesMap[k]++ + ibc.mu.Unlock() + return nil +} + +// Put puts ib under key k into ibc. +// +// Returns true if ib was put into ibc. +func (ibc *inmemoryBlockCache) Put(k inmemoryBlockCacheKey, ib *inmemoryBlock) bool { + ibc.mu.Lock() + + if ibc.missesMap[k] < 2 { + // Do not cache entry with low number of accesses, since it may evict + // frequently accessed entries from the cache. + ibc.mu.Unlock() + return false + } + + // Clean superflouos entries in ibc.m and ibc.missesMap. + if overflow := len(ibc.m) - getMaxCachedInmemoryBlocksPerPart(); overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(ibc.m)) * 0.1) + for k := range ibc.m { + // do not call putInmemoryBlock(ib), since the ib + // may be used by concurrent goroutines. + delete(ibc.m, k) + overflow-- + if overflow == 0 { + break + } + } + } + if overflow := len(ibc.missesMap) - 8*getMaxCachedInmemoryBlocksPerPart(); overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(ibc.missesMap)) * 0.1) + for k := range ibc.missesMap { + delete(ibc.missesMap, k) + overflow-- + if overflow == 0 { + break + } + } + } + + // The entry is frequently accessed, so store it in the cache. + delete(ibc.missesMap, k) + ibc.m[k] = ib + ibc.mu.Unlock() + return true +} + +func (ibc *inmemoryBlockCache) Len() uint64 { + ibc.mu.RLock() + n := len(ibc.m) + ibc.mu.RUnlock() + return uint64(n) +} + +func (ibc *inmemoryBlockCache) Requests() uint64 { + return atomic.LoadUint64(&ibc.requests) +} + +func (ibc *inmemoryBlockCache) Misses() uint64 { + return atomic.LoadUint64(&ibc.misses) +} diff --git a/lib/mergeset/part_header.go b/lib/mergeset/part_header.go new file mode 100644 index 000000000..8f2d5798f --- /dev/null +++ b/lib/mergeset/part_header.go @@ -0,0 +1,171 @@ +package mergeset + +import ( + "encoding/hex" + "encoding/json" + "fmt" + "io/ioutil" + "path/filepath" + "strconv" + "strings" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" +) + +type partHeader struct { + // The number of items the part contains. + itemsCount uint64 + + // The number of blocks the part contains. + blocksCount uint64 + + // The first item in the part. + firstItem []byte + + // The last item in the part. + lastItem []byte +} + +type partHeaderJSON struct { + ItemsCount uint64 + BlocksCount uint64 + FirstItem hexString + LastItem hexString +} + +type hexString []byte + +func (hs hexString) MarshalJSON() ([]byte, error) { + h := hex.EncodeToString(hs) + b := make([]byte, 0, len(h)+2) + b = append(b, '"') + b = append(b, h...) + b = append(b, '"') + return b, nil +} + +func (hs *hexString) UnmarshalJSON(data []byte) error { + if len(data) < 2 { + return fmt.Errorf("too small data string: got %q; must be at least 2 bytes", data) + } + if data[0] != '"' || data[len(data)-1] != '"' { + return fmt.Errorf("missing heading and/or tailing quotes in the data string %q", data) + } + data = data[1 : len(data)-1] + b, err := hex.DecodeString(string(data)) + if err != nil { + return fmt.Errorf("cannot hex-decode %q: %s", data, err) + } + *hs = b + return nil +} + +func (ph *partHeader) Reset() { + ph.itemsCount = 0 + ph.blocksCount = 0 + ph.firstItem = ph.firstItem[:0] + ph.lastItem = ph.lastItem[:0] +} + +func (ph *partHeader) String() string { + return fmt.Sprintf("partHeader{itemsCount: %d, blocksCount: %d, firstItem: %X, lastItem: %X}", + ph.itemsCount, ph.blocksCount, ph.firstItem, ph.lastItem) +} + +func (ph *partHeader) CopyFrom(src *partHeader) { + ph.itemsCount = src.itemsCount + ph.blocksCount = src.blocksCount + ph.firstItem = append(ph.firstItem[:0], src.firstItem...) + ph.lastItem = append(ph.lastItem[:0], src.lastItem...) +} + +func (ph *partHeader) ParseFromPath(partPath string) error { + ph.Reset() + + partPath = filepath.Clean(partPath) + + // Extract encoded part name. + n := strings.LastIndexByte(partPath, '/') + if n < 0 { + return fmt.Errorf("cannot find encoded part name in the path %q", partPath) + } + partName := partPath[n+1:] + + // PartName must have the following form: + // itemsCount_blocksCount_Garbage + a := strings.Split(partName, "_") + if len(a) != 3 { + return fmt.Errorf("unexpected number of substrings in the part name %q: got %d; want %d", partName, len(a), 3) + } + + // Read itemsCount from partName. + itemsCount, err := strconv.ParseUint(a[0], 10, 64) + if err != nil { + return fmt.Errorf("cannot parse itemsCount from partName %q: %s", partName, err) + } + ph.itemsCount = itemsCount + if ph.itemsCount <= 0 { + return fmt.Errorf("part %q cannot contain zero items", partPath) + } + + // Read blocksCount from partName. + blocksCount, err := strconv.ParseUint(a[1], 10, 64) + if err != nil { + return fmt.Errorf("cannot parse blocksCount from partName %q: %s", partName, err) + } + ph.blocksCount = blocksCount + if ph.blocksCount <= 0 { + return fmt.Errorf("part %q cannot contain zero blocks", partPath) + } + if ph.blocksCount > ph.itemsCount { + return fmt.Errorf("the number of blocks cannot exceed the number of items in the part %q; got blocksCount=%d, itemsCount=%d", + partPath, ph.blocksCount, ph.itemsCount) + } + + // Read other ph fields from metadata. + metadataPath := partPath + "/metadata.json" + metadata, err := ioutil.ReadFile(metadataPath) + if err != nil { + return fmt.Errorf("cannot read %q: %s", metadataPath, err) + } + + var phj partHeaderJSON + if err := json.Unmarshal(metadata, &phj); err != nil { + return fmt.Errorf("cannot parse %q: %s", metadataPath, err) + } + if ph.itemsCount != phj.ItemsCount { + return fmt.Errorf("invalid ItemsCount in %q; got %d; want %d", metadataPath, phj.ItemsCount, ph.itemsCount) + } + ph.blocksCount = phj.BlocksCount + if ph.blocksCount != phj.BlocksCount { + return fmt.Errorf("invalid BlocksCount in %q; got %d; want %d", metadataPath, phj.BlocksCount, ph.blocksCount) + } + + ph.firstItem = append(ph.firstItem[:0], phj.FirstItem...) + ph.lastItem = append(ph.lastItem[:0], phj.LastItem...) + + return nil +} + +func (ph *partHeader) Path(tablePath string, suffix uint64) string { + tablePath = filepath.Clean(tablePath) + return fmt.Sprintf("%s/%d_%d_%016X", tablePath, ph.itemsCount, ph.blocksCount, suffix) +} + +func (ph *partHeader) WriteMetadata(partPath string) error { + phj := &partHeaderJSON{ + ItemsCount: ph.itemsCount, + BlocksCount: ph.blocksCount, + FirstItem: append([]byte{}, ph.firstItem...), + LastItem: append([]byte{}, ph.lastItem...), + } + metadata, err := json.MarshalIndent(&phj, "", "\t") + if err != nil { + return fmt.Errorf("cannot marshal metadata: %s", err) + } + metadataPath := partPath + "/metadata.json" + if err := fs.WriteFile(metadataPath, metadata); err != nil { + return fmt.Errorf("cannot create %q: %s", metadataPath, err) + } + return nil +} diff --git a/lib/mergeset/part_search.go b/lib/mergeset/part_search.go new file mode 100644 index 000000000..876932c66 --- /dev/null +++ b/lib/mergeset/part_search.go @@ -0,0 +1,382 @@ +package mergeset + +import ( + "fmt" + "io" + "sort" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +type partSearch struct { + // Item contains the last item found after the call to NextItem. + // + // The Item content is valud intil the next call to NextItem. + Item []byte + + // p is a part to search. + p *part + + // The remaining metaindex rows to scan, obtained from p.mrs. + mrs []metaindexRow + + // The remaining block headers to scan in the current metaindexRow. + bhs []blockHeader + + // Pointer to index block, which may be reused. + indexBlockReuse *indexBlock + + // Pointer to inmemory block, which may be reused. + inmemoryBlockReuse *inmemoryBlock + + idxbCache *indexBlockCache + ibCache *inmemoryBlockCache + + // err contains the last error. + err error + + indexBuf []byte + compressedIndexBuf []byte + + sb storageBlock + + ib *inmemoryBlock + ibItemIdx int +} + +func (ps *partSearch) reset() { + ps.Item = nil + ps.p = nil + ps.mrs = nil + ps.bhs = nil + if ps.indexBlockReuse != nil { + putIndexBlock(ps.indexBlockReuse) + ps.indexBlockReuse = nil + } + if ps.inmemoryBlockReuse != nil { + putInmemoryBlock(ps.inmemoryBlockReuse) + ps.inmemoryBlockReuse = nil + } + ps.idxbCache = nil + ps.ibCache = nil + ps.err = nil + + ps.indexBuf = ps.indexBuf[:0] + ps.compressedIndexBuf = ps.compressedIndexBuf[:0] + + ps.sb.Reset() + + ps.ib = nil + ps.ibItemIdx = 0 +} + +// Init initializes ps for search in the p. +// +// Use Seek for search in p. +func (ps *partSearch) Init(p *part) { + ps.reset() + + ps.p = p + ps.idxbCache = &p.idxbCache + ps.ibCache = &p.ibCache +} + +// Seek seeks for the first item greater or equal to k in ps. +func (ps *partSearch) Seek(k []byte) { + if err := ps.Error(); err != nil { + // Do nothing on unrecoverable error. + return + } + ps.err = nil + + if string(k) > string(ps.p.ph.lastItem) { + // Not matching items in the part. + ps.err = io.EOF + return + } + + if ps.tryFastSeek(k) { + return + } + + ps.Item = nil + ps.mrs = ps.p.mrs + ps.bhs = nil + + ps.indexBuf = ps.indexBuf[:0] + ps.compressedIndexBuf = ps.compressedIndexBuf[:0] + + ps.sb.Reset() + + ps.ib = nil + ps.ibItemIdx = 0 + + if string(k) <= string(ps.p.ph.firstItem) { + // The first item in the first block matches. + ps.err = ps.nextBlock() + return + } + + // Locate the first metaindexRow to scan. + if len(ps.mrs) == 0 { + logger.Panicf("BUG: part without metaindex rows passed to partSearch") + } + n := sort.Search(len(ps.mrs), func(i int) bool { + return string(k) <= string(ps.mrs[i].firstItem) + }) + if n > 0 { + // The given k may be located in the previous metaindexRow, so go to it. + n-- + } + ps.mrs = ps.mrs[n:] + + // Read block headers for the found metaindexRow. + if err := ps.nextBHS(); err != nil { + ps.err = err + return + } + + // Locate the first block to scan. + n = sort.Search(len(ps.bhs), func(i int) bool { + return string(k) <= string(ps.bhs[i].firstItem) + }) + if n > 0 { + // The given k may be located in the previous block, so go to it. + n-- + } + ps.bhs = ps.bhs[n:] + + // Read the block. + if err := ps.nextBlock(); err != nil { + ps.err = err + return + } + + // Locate the first item to scan in the block. + items := ps.ib.items + cpLen := commonPrefixLen(ps.ib.commonPrefix, k) + if cpLen > 0 { + keySuffix := k[cpLen:] + ps.ibItemIdx = sort.Search(len(items), func(i int) bool { + return string(keySuffix) <= string(items[i][cpLen:]) + }) + } else { + ps.ibItemIdx = binarySearchKey(items, k) + } + if ps.ibItemIdx < len(items) { + // The item has been found. + return + } + + // Nothing found in the current block. Proceed to the next block. + // The item to search must be the first in the next block. + if err := ps.nextBlock(); err != nil { + ps.err = err + return + } +} + +func (ps *partSearch) tryFastSeek(k []byte) bool { + if ps.ib == nil { + return false + } + items := ps.ib.items + idx := ps.ibItemIdx + if idx >= len(items) { + // The ib is exhausted. + return false + } + if string(k) > string(items[len(items)-1]) { + // The item is located in next blocks. + return false + } + + // The item is located either in the current block or in previous blocks. + if idx > 0 { + idx-- + } + if string(k) < string(items[idx]) { + if string(k) < string(items[0]) { + // The item is located in previous blocks. + return false + } + idx = 0 + } + + // The item is located in the current block + ps.ibItemIdx = idx + binarySearchKey(items[idx:], k) + return true +} + +// NextItem advances to the next Item. +// +// Returns true on success. +func (ps *partSearch) NextItem() bool { + if ps.err != nil { + return false + } + + if ps.ibItemIdx < len(ps.ib.items) { + // Fast path - the current block contains more items. + // Proceed to the next item. + ps.Item = ps.ib.items[ps.ibItemIdx] + ps.ibItemIdx++ + return true + } + + // The current block is over. Proceed to the next block. + if err := ps.nextBlock(); err != nil { + ps.err = err + return false + } + + // Invariant: len(ps.ib.items) > 0 after nextBlock. + ps.Item = ps.ib.items[0] + ps.ibItemIdx++ + return true +} + +// Error returns the last error occurred in the ps. +func (ps *partSearch) Error() error { + if ps.err == io.EOF { + return nil + } + return ps.err +} + +func (ps *partSearch) nextBlock() error { + if ps.inmemoryBlockReuse != nil { + putInmemoryBlock(ps.inmemoryBlockReuse) + ps.inmemoryBlockReuse = nil + } + if len(ps.bhs) == 0 { + // The current metaindexRow is over. Proceed to the next metaindexRow. + if err := ps.nextBHS(); err != nil { + return err + } + } + bh := &ps.bhs[0] + ps.bhs = ps.bhs[1:] + ib, mayReuseInmemoryBlock, err := ps.getInmemoryBlock(bh) + if err != nil { + return err + } + if mayReuseInmemoryBlock { + ps.inmemoryBlockReuse = ib + } + ps.ib = ib + ps.ibItemIdx = 0 + return nil +} + +func (ps *partSearch) nextBHS() error { + if ps.indexBlockReuse != nil { + putIndexBlock(ps.indexBlockReuse) + ps.indexBlockReuse = nil + } + if len(ps.mrs) == 0 { + return io.EOF + } + mr := &ps.mrs[0] + ps.mrs = ps.mrs[1:] + idxb, mayReuseIndexBlock, err := ps.getIndexBlock(mr) + if err != nil { + return fmt.Errorf("cannot get index block: %s", err) + } + if mayReuseIndexBlock { + ps.indexBlockReuse = idxb + } + ps.bhs = idxb.bhs + return nil +} + +func (ps *partSearch) getIndexBlock(mr *metaindexRow) (*indexBlock, bool, error) { + idxbKey := mr.indexBlockOffset + idxb := ps.idxbCache.Get(idxbKey) + if idxb != nil { + return idxb, false, nil + } + idxb, err := ps.readIndexBlock(mr) + if err != nil { + return nil, false, err + } + ok := ps.idxbCache.Put(idxbKey, idxb) + return idxb, !ok, nil +} + +func (ps *partSearch) readIndexBlock(mr *metaindexRow) (*indexBlock, error) { + ps.compressedIndexBuf = bytesutil.Resize(ps.compressedIndexBuf, int(mr.indexBlockSize)) + ps.p.indexFile.ReadAt(ps.compressedIndexBuf, int64(mr.indexBlockOffset)) + + var err error + ps.indexBuf, err = encoding.DecompressZSTD(ps.indexBuf[:0], ps.compressedIndexBuf) + if err != nil { + return nil, fmt.Errorf("cannot decompress index block with size %d bytes: %s", len(ps.compressedIndexBuf), err) + } + idxb := getIndexBlock() + idxb.bhs, err = unmarshalBlockHeaders(idxb.bhs[:0], ps.indexBuf, int(mr.blockHeadersCount)) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal block headers from index block (offset=%d, size=%d): %s", mr.indexBlockOffset, mr.indexBlockSize, err) + } + return idxb, nil +} + +func (ps *partSearch) getInmemoryBlock(bh *blockHeader) (*inmemoryBlock, bool, error) { + var ibKey inmemoryBlockCacheKey + ibKey.Init(bh) + ib := ps.ibCache.Get(ibKey) + if ib != nil { + return ib, false, nil + } + ib, err := ps.readInmemoryBlock(bh) + if err != nil { + return nil, false, err + } + ok := ps.ibCache.Put(ibKey, ib) + return ib, !ok, nil +} + +func (ps *partSearch) readInmemoryBlock(bh *blockHeader) (*inmemoryBlock, error) { + ps.sb.Reset() + + ps.sb.itemsData = bytesutil.Resize(ps.sb.itemsData, int(bh.itemsBlockSize)) + ps.p.itemsFile.ReadAt(ps.sb.itemsData, int64(bh.itemsBlockOffset)) + + ps.sb.lensData = bytesutil.Resize(ps.sb.lensData, int(bh.lensBlockSize)) + ps.p.lensFile.ReadAt(ps.sb.lensData, int64(bh.lensBlockOffset)) + + ib := getInmemoryBlock() + if err := ib.UnmarshalData(&ps.sb, bh.firstItem, bh.commonPrefix, bh.itemsCount, bh.marshalType); err != nil { + return nil, fmt.Errorf("cannot unmarshal storage block with %d items: %s", bh.itemsCount, err) + } + + return ib, nil +} + +func binarySearchKey(items [][]byte, key []byte) int { + if len(items) > 0 { + if string(key) <= string(items[0]) { + // Fast path - the item is the first. + return 0 + } + if len(items) > 1 && string(key) <= string(items[1]) { + // Fast path - the item is the second. + return 1 + } + } + + // This has been copy-pasted from https://golang.org/src/sort/search.go + n := uint(len(items)) + i, j := uint(0), n + for i < j { + h := uint(i+j) >> 1 + if string(key) > string(items[h]) { + i = h + 1 + } else { + j = h + } + } + return int(i) +} diff --git a/lib/mergeset/part_search_test.go b/lib/mergeset/part_search_test.go new file mode 100644 index 000000000..de6ac0576 --- /dev/null +++ b/lib/mergeset/part_search_test.go @@ -0,0 +1,164 @@ +package mergeset + +import ( + "fmt" + "math/rand" + "sort" + "testing" + "time" +) + +func TestPartSearch(t *testing.T) { + p, items, err := newTestPart(10, 4000) + if err != nil { + t.Fatalf("cannot create test part: %s", err) + } + + t.Run("serial", func(t *testing.T) { + if err := testPartSearchSerial(p, items); err != nil { + t.Fatalf("error in serial part search test: %s", err) + } + }) + + t.Run("concurrent", func(t *testing.T) { + if err := testPartSearchConcurrent(p, items); err != nil { + t.Fatalf("error in concurrent part search test: %s", err) + } + }) +} + +func testPartSearchConcurrent(p *part, items []string) error { + const goroutinesCount = 5 + ch := make(chan error, goroutinesCount) + for i := 0; i < goroutinesCount; i++ { + go func() { + ch <- testPartSearchSerial(p, items) + }() + } + for i := 0; i < goroutinesCount; i++ { + select { + case err := <-ch: + if err != nil { + return err + } + case <-time.After(time.Second * 5): + return fmt.Errorf("timeout") + } + } + return nil +} + +func testPartSearchSerial(p *part, items []string) error { + var ps partSearch + + ps.Init(p) + var k []byte + + // Search for the item smaller than the items[0] + k = append(k[:0], items[0]...) + if len(k) > 0 { + k = k[:len(k)-1] + } + ps.Seek(k) + for i, item := range items { + if !ps.NextItem() { + return fmt.Errorf("missing item at position %d", i) + } + if string(ps.Item) != item { + return fmt.Errorf("unexpected item found at position %d; got %X; want %X", i, ps.Item, item) + } + } + if ps.NextItem() { + return fmt.Errorf("unexpected item found past the end of all the items: %X", ps.Item) + } + if err := ps.Error(); err != nil { + return fmt.Errorf("unexpected error: %s", err) + } + + // Search for the item bigger than the items[len(items)-1] + k = append(k[:0], items[len(items)-1]...) + k = append(k, "tail"...) + ps.Seek(k) + if ps.NextItem() { + return fmt.Errorf("unexpected item found: %X; want nothing", ps.Item) + } + if err := ps.Error(); err != nil { + return fmt.Errorf("unexpected error when searching past the last item: %s", err) + } + + // Search for inner items + for loop := 0; loop < 100; loop++ { + idx := rand.Intn(len(items)) + k = append(k[:0], items[idx]...) + ps.Seek(k) + n := sort.Search(len(items), func(i int) bool { + return string(k) <= string(items[i]) + }) + for i := n; i < len(items); i++ { + if !ps.NextItem() { + return fmt.Errorf("missing item at position %d for idx %d on the loop %d", i, n, loop) + } + if string(ps.Item) != items[i] { + return fmt.Errorf("unexpected item found at position %d for idx %d out of %d items; loop %d; key=%X; got %X; want %X", + i, n, len(items), loop, k, ps.Item, items[i]) + } + } + if ps.NextItem() { + return fmt.Errorf("unexpected item found past the end of all the items for idx %d out of %d items; loop %d: got %X", n, len(items), loop, ps.Item) + } + if err := ps.Error(); err != nil { + return fmt.Errorf("unexpected error on loop %d: %s", loop, err) + } + } + + // Search for sorted items + for i, item := range items { + ps.Seek([]byte(item)) + if !ps.NextItem() { + return fmt.Errorf("cannot find items[%d]=%X", i, item) + } + if string(ps.Item) != item { + return fmt.Errorf("unexpected item found at position %d: got %X; want %X", i, ps.Item, item) + } + if err := ps.Error(); err != nil { + return fmt.Errorf("unexpected error when searching for items[%d]=%X: %s", i, item, err) + } + } + + // Search for reversely sorted items + for i := 0; i < len(items); i++ { + item := items[len(items)-i-1] + ps.Seek([]byte(item)) + if !ps.NextItem() { + return fmt.Errorf("cannot find items[%d]=%X", i, item) + } + if string(ps.Item) != item { + return fmt.Errorf("unexpected item found at position %d: got %X; want %X", i, ps.Item, item) + } + if err := ps.Error(); err != nil { + return fmt.Errorf("unexpected error when searching for items[%d]=%X: %s", i, item, err) + } + } + + return nil +} + +func newTestPart(blocksCount, maxItemsPerBlock int) (*part, []string, error) { + bsrs, items := newTestInmemoryBlockStreamReaders(blocksCount, maxItemsPerBlock) + + var itemsMerged uint64 + var ip inmemoryPart + var bsw blockStreamWriter + bsw.InitFromInmemoryPart(&ip, 0) + if err := mergeBlockStreams(&ip.ph, &bsw, bsrs, nil, &itemsMerged); err != nil { + return nil, nil, fmt.Errorf("cannot merge blocks: %s", err) + } + if itemsMerged != uint64(len(items)) { + return nil, nil, fmt.Errorf("unexpected itemsMerged; got %d; want %d", itemsMerged, len(items)) + } + p, err := newPart(&ip.ph, "partName", ip.metaindexData.NewReader(), &ip.indexData, &ip.itemsData, &ip.lensData) + if err != nil { + return nil, nil, fmt.Errorf("cannot create part: %s", err) + } + return p, items, nil +} diff --git a/lib/mergeset/table.go b/lib/mergeset/table.go new file mode 100644 index 000000000..ad5142236 --- /dev/null +++ b/lib/mergeset/table.go @@ -0,0 +1,1205 @@ +package mergeset + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "runtime" + "sort" + "strings" + "sync" + "sync/atomic" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/syncwg" + "golang.org/x/sys/unix" +) + +// maxParts is the maximum number of parts in the table. +// +// This number may be reached when the insertion pace outreaches merger pace. +const maxParts = 512 + +// Default number of parts to merge at once. +// +// This number has been obtained empirically - it gives the lowest possible overhead. +// See appendPartsToMerge tests for details. +const defaultPartsToMerge = 15 + +// The final number of parts to merge at once. +// +// It must be smaller than defaultPartsToMerge. +// Lower value improves select performance at the cost of increased +// write amplification. +const finalPartsToMerge = 2 + +// maxItemsPerPart is the absolute maximum number of items per part. +// +// This number should be limited by the amount of time required to merge +// such number of items. The required time shouldn't exceed a day. +// +// TODO: adjust this number using production stats. +const maxItemsPerPart = 100e9 + +// maxItemsPerCachedPart is the maximum items per created part by the merge, +// which must be cached in the OS page cache. +// +// Such parts are usually frequently accessed, so it is good to cache their +// contents in OS page cache. +const maxItemsPerCachedPart = 100e6 + +// The interval for flushing (converting) recent raw items into parts, +// so they become visible to search. +const rawItemsFlushInterval = time.Second + +// Table represents mergeset table. +type Table struct { + path string + + partsLock sync.Mutex + parts []*partWrapper + + rawItemsBlocks []*inmemoryBlock + rawItemsLock sync.Mutex + rawItemsLastFlushTime time.Time + + mergeIdx uint64 + + snapshotLock sync.RWMutex + + flockF *os.File + + stopCh chan struct{} + + // Use syncwg instead of sync, since Add/Wait may be called from concurrent goroutines. + partMergersWG syncwg.WaitGroup + + rawItemsFlusherWG sync.WaitGroup + + // Use syncwg instead of sync, since Add/Wait may be called from concurrent goroutines. + rawItemsPendingFlushesWG syncwg.WaitGroup + + activeMerges uint64 + mergesCount uint64 + itemsMerged uint64 + assistedMerges uint64 +} + +type partWrapper struct { + p *part + + mp *inmemoryPart + + refCount uint64 + + isInMerge bool +} + +func (pw *partWrapper) incRef() { + atomic.AddUint64(&pw.refCount, 1) +} + +func (pw *partWrapper) decRef() { + n := atomic.AddUint64(&pw.refCount, ^uint64(0)) + if int64(n) < 0 { + logger.Panicf("BUG: pw.refCount must be bigger than 0; got %d", int64(n)) + } + if n > 0 { + return + } + + if pw.mp != nil { + putInmemoryPart(pw.mp) + pw.mp = nil + } + pw.p.MustClose() + pw.p = nil +} + +// OpenTable opens a table on the given path. +// +// The table is created if it doesn't exist yet. +func OpenTable(path string) (*Table, error) { + path = filepath.Clean(path) + logger.Infof("opening table %q...", path) + startTime := time.Now() + + // Create a directory for the table if it doesn't exist yet. + if err := fs.MkdirAllIfNotExist(path); err != nil { + return nil, fmt.Errorf("cannot create directory %q: %s", path, err) + } + + // Protect from concurrent opens. + flockFile := path + "/flock.lock" + flockF, err := os.Create(flockFile) + if err != nil { + return nil, fmt.Errorf("cannot create lock file %q: %s", flockFile, err) + } + if err := unix.Flock(int(flockF.Fd()), unix.LOCK_EX|unix.LOCK_NB); err != nil { + return nil, fmt.Errorf("cannot acquire lock on file %q: %s", flockFile, err) + } + + // Open table parts. + pws, err := openParts(path) + if err != nil { + return nil, fmt.Errorf("cannot open table parts at %q: %s", path, err) + } + + tb := &Table{ + path: path, + parts: pws, + mergeIdx: uint64(time.Now().UnixNano()), + flockF: flockF, + stopCh: make(chan struct{}), + } + tb.startPartMergers() + tb.startRawItemsFlusher() + + var m TableMetrics + tb.UpdateMetrics(&m) + logger.Infof("table %q has been opened in %s; partsCount: %d; blocksCount: %d, itemsCount: %d", + path, time.Since(startTime), m.PartsCount, m.BlocksCount, m.ItemsCount) + + return tb, nil +} + +// MustClose closes the table. +func (tb *Table) MustClose() { + close(tb.stopCh) + + logger.Infof("waiting for raw items flusher to stop on %q...", tb.path) + startTime := time.Now() + tb.rawItemsFlusherWG.Wait() + logger.Infof("raw items flusher stopped in %s on %q", time.Since(startTime), tb.path) + + logger.Infof("waiting for part mergers to stop on %q...", tb.path) + startTime = time.Now() + tb.partMergersWG.Wait() + logger.Infof("part mergers stopped in %s on %q", time.Since(startTime), tb.path) + + logger.Infof("flushing inmemory parts to files on %q...", tb.path) + startTime = time.Now() + + // Flush raw items the last time before exit. + tb.flushRawItems(true) + + // Flush inmemory parts to disk. + var pws []*partWrapper + tb.partsLock.Lock() + for _, pw := range tb.parts { + if pw.mp == nil { + continue + } + if pw.isInMerge { + logger.Panicf("BUG: the inmemory part %s mustn't be in merge after stopping parts merger in %q", &pw.mp.ph, tb.path) + } + pw.isInMerge = true + pws = append(pws, pw) + } + tb.partsLock.Unlock() + + if err := tb.mergePartsOptimal(pws); err != nil { + logger.Panicf("FATAL: cannot flush inmemory parts to files in %q: %s", tb.path, err) + } + logger.Infof("%d inmemory parts have been flushed to files in %s on %q", len(pws), time.Since(startTime), tb.path) + + // Remove references to parts from the tb, so they may be eventually closed + // after all the seraches are done. + tb.partsLock.Lock() + parts := tb.parts + tb.parts = nil + tb.partsLock.Unlock() + + for _, pw := range parts { + pw.decRef() + } + + // Release flockF + if err := tb.flockF.Close(); err != nil { + logger.Panicf("FATAL:cannot close %q: %s", tb.flockF.Name(), err) + } +} + +// Path returns the path to tb on the filesystem. +func (tb *Table) Path() string { + return tb.path +} + +// TableMetrics contains essential metrics for the Table. +type TableMetrics struct { + ActiveMerges uint64 + MergesCount uint64 + ItemsMerged uint64 + AssistedMerges uint64 + + PendingItems uint64 + + PartsCount uint64 + + BlocksCount uint64 + ItemsCount uint64 + + DataBlocksCacheSize uint64 + DataBlocksCacheRequests uint64 + DataBlocksCacheMisses uint64 + + IndexBlocksCacheSize uint64 + IndexBlocksCacheRequests uint64 + IndexBlocksCacheMisses uint64 + + PartsRefCount uint64 +} + +// UpdateMetrics updates m with metrics from tb. +func (tb *Table) UpdateMetrics(m *TableMetrics) { + m.ActiveMerges += atomic.LoadUint64(&tb.activeMerges) + m.MergesCount += atomic.LoadUint64(&tb.mergesCount) + m.ItemsMerged += atomic.LoadUint64(&tb.itemsMerged) + m.AssistedMerges += atomic.LoadUint64(&tb.assistedMerges) + + tb.rawItemsLock.Lock() + for _, ib := range tb.rawItemsBlocks { + m.PendingItems += uint64(len(ib.items)) + } + tb.rawItemsLock.Unlock() + + tb.partsLock.Lock() + m.PartsCount += uint64(len(tb.parts)) + for _, pw := range tb.parts { + p := pw.p + + m.BlocksCount += p.ph.blocksCount + m.ItemsCount += p.ph.itemsCount + + m.DataBlocksCacheSize += p.ibCache.Len() + m.DataBlocksCacheRequests += p.ibCache.Requests() + m.DataBlocksCacheMisses += p.ibCache.Misses() + + m.IndexBlocksCacheSize += p.idxbCache.Len() + m.IndexBlocksCacheRequests += p.idxbCache.Requests() + m.IndexBlocksCacheMisses += p.idxbCache.Misses() + + m.PartsRefCount += atomic.LoadUint64(&pw.refCount) + } + tb.partsLock.Unlock() + + atomic.AddUint64(&m.DataBlocksCacheRequests, atomic.LoadUint64(&inmemoryBlockCacheRequests)) + atomic.AddUint64(&m.DataBlocksCacheMisses, atomic.LoadUint64(&inmemoryBlockCacheMisses)) + + atomic.AddUint64(&m.IndexBlocksCacheRequests, atomic.LoadUint64(&indexBlockCacheRequests)) + atomic.AddUint64(&m.IndexBlocksCacheMisses, atomic.LoadUint64(&indexBlockCacheMisses)) +} + +// AddItems adds the given items to the tb. +func (tb *Table) AddItems(items [][]byte) error { + var err error + var blocksToMerge []*inmemoryBlock + + tb.rawItemsLock.Lock() + if len(tb.rawItemsBlocks) == 0 { + ib := getInmemoryBlock() + tb.rawItemsBlocks = append(tb.rawItemsBlocks, ib) + } + ib := tb.rawItemsBlocks[len(tb.rawItemsBlocks)-1] + for _, item := range items { + if !ib.Add(item) { + ib = getInmemoryBlock() + if !ib.Add(item) { + putInmemoryBlock(ib) + err = fmt.Errorf("cannot insert an item %q into an empty inmemoryBlock on %q; it looks like the item is too large? len(item)=%d", + item, tb.path, len(item)) + break + } + tb.rawItemsBlocks = append(tb.rawItemsBlocks, ib) + } + } + if len(tb.rawItemsBlocks) >= 1024 { + blocksToMerge = tb.rawItemsBlocks + tb.rawItemsBlocks = nil + tb.rawItemsLastFlushTime = time.Now() + } + tb.rawItemsLock.Unlock() + + if blocksToMerge == nil { + // Fast path. + return err + } + + // Slow path: merge blocksToMerge. + tb.mergeRawItemsBlocks(blocksToMerge) + return err +} + +// getParts appends parts snapshot to dst and returns it. +// +// The appended parts must be released with putParts. +func (tb *Table) getParts(dst []*partWrapper) []*partWrapper { + tb.partsLock.Lock() + for _, pw := range tb.parts { + pw.incRef() + } + dst = append(dst, tb.parts...) + tb.partsLock.Unlock() + + return dst +} + +// putParts releases the given pws obtained via getParts. +func (tb *Table) putParts(pws []*partWrapper) { + for _, pw := range pws { + pw.decRef() + } +} + +func (tb *Table) startRawItemsFlusher() { + tb.rawItemsFlusherWG.Add(1) + go func() { + tb.rawItemsFlusher() + tb.rawItemsFlusherWG.Done() + }() +} + +func (tb *Table) rawItemsFlusher() { + t := time.NewTimer(rawItemsFlushInterval) + for { + select { + case <-tb.stopCh: + return + case <-t.C: + t.Reset(rawItemsFlushInterval) + } + + tb.flushRawItems(false) + } +} + +func (tb *Table) mergePartsOptimal(pws []*partWrapper) error { + for len(pws) > defaultPartsToMerge { + if err := tb.mergeParts(pws[:defaultPartsToMerge], nil, false); err != nil { + return fmt.Errorf("cannot merge %d parts: %s", defaultPartsToMerge, err) + } + pws = pws[defaultPartsToMerge:] + } + if len(pws) > 0 { + if err := tb.mergeParts(pws, nil, false); err != nil { + return fmt.Errorf("cannot merge %d parts: %s", len(pws), err) + } + } + return nil +} + +// DebugFlush flushes all the added items to the storage, +// so they become visible to search. +// +// This function is only for debugging and testing. +func (tb *Table) DebugFlush() { + tb.flushRawItems(true) + + // Wait for background flushers to finish. + tb.rawItemsPendingFlushesWG.Wait() +} + +func (tb *Table) flushRawItems(isFinal bool) { + tb.rawItemsPendingFlushesWG.Add(1) + defer tb.rawItemsPendingFlushesWG.Done() + + mustFlush := false + currentTime := time.Now() + var blocksToMerge []*inmemoryBlock + + tb.rawItemsLock.Lock() + if isFinal || currentTime.Sub(tb.rawItemsLastFlushTime) > rawItemsFlushInterval { + mustFlush = true + blocksToMerge = tb.rawItemsBlocks + tb.rawItemsBlocks = nil + tb.rawItemsLastFlushTime = currentTime + } + tb.rawItemsLock.Unlock() + + if mustFlush { + tb.mergeRawItemsBlocks(blocksToMerge) + } +} + +func (tb *Table) mergeRawItemsBlocks(blocksToMerge []*inmemoryBlock) { + tb.partMergersWG.Add(1) + defer tb.partMergersWG.Done() + + pws := make([]*partWrapper, 0, (len(blocksToMerge)+defaultPartsToMerge-1)/defaultPartsToMerge) + for len(blocksToMerge) > 0 { + n := defaultPartsToMerge + if n > len(blocksToMerge) { + n = len(blocksToMerge) + } + pw := tb.mergeInmemoryBlocks(blocksToMerge[:n]) + blocksToMerge = blocksToMerge[n:] + if pw == nil { + continue + } + pw.isInMerge = true + pws = append(pws, pw) + } + if len(pws) > 0 { + if err := tb.mergeParts(pws, nil, true); err != nil { + logger.Panicf("FATAL: cannot merge raw parts: %s", err) + } + } + + for { + tb.partsLock.Lock() + ok := len(tb.parts) <= maxParts + tb.partsLock.Unlock() + if ok { + return + } + + // The added part exceeds maxParts count. Assist with merging other parts. + err := tb.mergeSmallParts(false) + if err == nil { + atomic.AddUint64(&tb.assistedMerges, 1) + continue + } + if err == errNothingToMerge || err == errForciblyStopped { + return + } + logger.Panicf("FATAL: cannot merge small parts: %s", err) + } +} + +func (tb *Table) mergeInmemoryBlocks(blocksToMerge []*inmemoryBlock) *partWrapper { + // Convert blocksToMerge into inmemoryPart's + pws := make([]*partWrapper, 0, len(blocksToMerge)) + for _, ib := range blocksToMerge { + if len(ib.items) == 0 { + continue + } + mp := getInmemoryPart() + mp.Init(ib) + putInmemoryBlock(ib) + p := mp.NewPart() + pw := &partWrapper{ + p: p, + mp: mp, + refCount: 1, + } + pws = append(pws, pw) + } + if len(pws) == 0 { + return nil + } + if len(pws) == 1 { + return pws[0] + } + defer func() { + // Return source inmemoryParts to pool. + for _, pw := range pws { + putInmemoryPart(pw.mp) + } + }() + + atomic.AddUint64(&tb.mergesCount, 1) + atomic.AddUint64(&tb.activeMerges, 1) + defer atomic.AddUint64(&tb.activeMerges, ^uint64(0)) + + // Prepare blockStreamReaders for source parts. + bsrs := make([]*blockStreamReader, 0, len(pws)) + for _, pw := range pws { + bsr := getBlockStreamReader() + bsr.InitFromInmemoryPart(pw.mp) + bsrs = append(bsrs, bsr) + } + + // Prepare blockStreamWriter for destination part. + bsw := getBlockStreamWriter() + compressLevel := 1 + mpDst := getInmemoryPart() + bsw.InitFromInmemoryPart(mpDst, compressLevel) + + // Merge parts. + // The merge shouldn't be interrupted by stopCh, + // since it may be final after stopCh is closed. + if err := mergeBlockStreams(&mpDst.ph, bsw, bsrs, nil, &tb.itemsMerged); err != nil { + logger.Panicf("FATAL: cannot merge inmemoryBlocks: %s", err) + } + putBlockStreamWriter(bsw) + for _, bsr := range bsrs { + putBlockStreamReader(bsr) + } + + p := mpDst.NewPart() + return &partWrapper{ + p: p, + mp: mpDst, + refCount: 1, + } +} + +func (tb *Table) startPartMergers() { + for i := 0; i < mergeWorkers; i++ { + tb.partMergersWG.Add(1) + go func() { + if err := tb.partMerger(); err != nil { + logger.Panicf("FATAL: unrecoverable error when merging parts in %q: %s", tb.path, err) + } + tb.partMergersWG.Done() + }() + } +} + +func (tb *Table) mergeSmallParts(isFinal bool) error { + maxItems := tb.maxOutPartItems() + if maxItems > maxItemsPerPart { + maxItems = maxItemsPerPart + } + + tb.partsLock.Lock() + pws := getPartsToMerge(tb.parts, maxItems, isFinal) + tb.partsLock.Unlock() + + return tb.mergeParts(pws, tb.stopCh, false) +} + +const ( + minMergeSleepTime = time.Millisecond + maxMergeSleepTime = time.Second +) + +func (tb *Table) partMerger() error { + sleepTime := minMergeSleepTime + var lastMergeTime time.Time + isFinal := false + t := time.NewTimer(sleepTime) + for { + err := tb.mergeSmallParts(isFinal) + if err == nil { + // Try merging additional parts. + sleepTime = minMergeSleepTime + lastMergeTime = time.Now() + isFinal = false + continue + } + if err == errForciblyStopped { + // The merger has been stopped. + return nil + } + if err != errNothingToMerge { + return err + } + if time.Since(lastMergeTime) > 10*time.Second { + // We have free time for merging into bigger parts. + // This should improve select performance. + lastMergeTime = time.Now() + isFinal = true + continue + } + + // Nothing to merge. Sleep for a while and try again. + sleepTime *= 2 + if sleepTime > maxMergeSleepTime { + sleepTime = maxMergeSleepTime + } + select { + case <-tb.stopCh: + return nil + case <-t.C: + t.Reset(sleepTime) + } + } +} + +var errNothingToMerge = fmt.Errorf("nothing to merge") + +func (tb *Table) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isOuterParts bool) error { + if len(pws) == 0 { + // Nothing to merge. + return errNothingToMerge + } + + atomic.AddUint64(&tb.mergesCount, 1) + atomic.AddUint64(&tb.activeMerges, 1) + defer atomic.AddUint64(&tb.activeMerges, ^uint64(0)) + + startTime := time.Now() + + defer func() { + // Remove isInMerge flag from pws. + tb.partsLock.Lock() + for _, pw := range pws { + if !pw.isInMerge { + logger.Panicf("BUG: missing isInMerge flag on the part %q", pw.p.path) + } + pw.isInMerge = false + } + tb.partsLock.Unlock() + }() + + // Prepare blockStreamReaders for source parts. + bsrs := make([]*blockStreamReader, 0, len(pws)) + defer func() { + for _, bsr := range bsrs { + putBlockStreamReader(bsr) + } + }() + for _, pw := range pws { + bsr := getBlockStreamReader() + if pw.mp != nil { + if !isOuterParts { + logger.Panicf("BUG: inmemory part must be always outer") + } + bsr.InitFromInmemoryPart(pw.mp) + } else { + if err := bsr.InitFromFilePart(pw.p.path); err != nil { + return fmt.Errorf("cannot open source part for merging: %s", err) + } + } + bsrs = append(bsrs, bsr) + } + + outItemsCount := uint64(0) + for _, pw := range pws { + outItemsCount += pw.p.ph.itemsCount + } + nocache := true + if outItemsCount < maxItemsPerCachedPart { + // Cache small (i.e. recent) output parts in OS file cache, + // since there is high chance they will be read soon. + nocache = false + + // Do not interrupt small merges. + stopCh = nil + } + + // Prepare blockStreamWriter for destination part. + mergeIdx := tb.nextMergeIdx() + tmpPartPath := fmt.Sprintf("%s/tmp/%016X", tb.path, mergeIdx) + bsw := getBlockStreamWriter() + compressLevel := getCompressLevelForPartItems(outItemsCount) + if err := bsw.InitFromFilePart(tmpPartPath, nocache, compressLevel); err != nil { + return fmt.Errorf("cannot create destination part %q: %s", tmpPartPath, err) + } + + // Merge parts into a temporary location. + var ph partHeader + err := mergeBlockStreams(&ph, bsw, bsrs, stopCh, &tb.itemsMerged) + putBlockStreamWriter(bsw) + if err != nil { + if err == errForciblyStopped { + return err + } + return fmt.Errorf("error when merging parts to %q: %s", tmpPartPath, err) + } + if err := ph.WriteMetadata(tmpPartPath); err != nil { + return fmt.Errorf("cannot write metadata to destination part %q: %s", tmpPartPath, err) + } + + // Close bsrs (aka source parts). + for _, bsr := range bsrs { + putBlockStreamReader(bsr) + } + bsrs = nil + + // Create a transaction for atomic deleting old parts and moving + // new part to its destination place. + var bb bytesutil.ByteBuffer + for _, pw := range pws { + if pw.mp == nil { + fmt.Fprintf(&bb, "%s\n", pw.p.path) + } + } + dstPartPath := ph.Path(tb.path, mergeIdx) + fmt.Fprintf(&bb, "%s -> %s\n", tmpPartPath, dstPartPath) + txnPath := fmt.Sprintf("%s/txn/%016X", tb.path, mergeIdx) + if err := fs.WriteFile(txnPath, bb.B); err != nil { + return fmt.Errorf("cannot create transaction file %q: %s", txnPath, err) + } + + // Run the created transaction. + if err := runTransaction(&tb.snapshotLock, tb.path, txnPath); err != nil { + return fmt.Errorf("cannot execute transaction %q: %s", txnPath, err) + } + + // Open the merged part. + newP, err := openFilePart(dstPartPath) + if err != nil { + return fmt.Errorf("cannot open merged part %q: %s", dstPartPath, err) + } + newPW := &partWrapper{ + p: newP, + refCount: 1, + } + + // Atomically remove old parts and add new part. + m := make(map[*partWrapper]bool, len(pws)) + for _, pw := range pws { + m[pw] = true + } + if len(m) != len(pws) { + logger.Panicf("BUG: %d duplicate parts found in the merge of %d parts", len(pws)-len(m), len(pws)) + } + removedParts := 0 + tb.partsLock.Lock() + tb.parts, removedParts = removeParts(tb.parts, m) + tb.parts = append(tb.parts, newPW) + tb.partsLock.Unlock() + if removedParts != len(m) { + if !isOuterParts { + logger.Panicf("BUG: unexpected number of parts removed; got %d; want %d", removedParts, len(m)) + } + if removedParts != 0 { + logger.Panicf("BUG: removed non-zero outer parts: %d", removedParts) + } + } + + // Remove partition references from old parts. + for _, pw := range pws { + pw.decRef() + } + + d := time.Since(startTime) + if d > 10*time.Second { + logger.Infof("merged %d items in %s at %d items/sec to %q", outItemsCount, d, int(float64(outItemsCount)/d.Seconds()), dstPartPath) + } + + return nil +} + +func getCompressLevelForPartItems(itemsCount uint64) int { + if itemsCount < 1<<19 { + return 1 + } + if itemsCount < 1<<22 { + return 2 + } + if itemsCount < 1<<25 { + return 3 + } + if itemsCount < 1<<28 { + return 4 + } + return 5 +} + +func (tb *Table) nextMergeIdx() uint64 { + return atomic.AddUint64(&tb.mergeIdx, 1) +} + +var ( + maxOutPartItemsLock sync.Mutex + maxOutPartItemsDeadline time.Time + lastMaxOutPartItems uint64 +) + +func (tb *Table) maxOutPartItems() uint64 { + maxOutPartItemsLock.Lock() + if time.Until(maxOutPartItemsDeadline) < 0 { + lastMaxOutPartItems = tb.maxOutPartItemsSlow() + maxOutPartItemsDeadline = time.Now().Add(time.Second) + } + n := lastMaxOutPartItems + maxOutPartItemsLock.Unlock() + return n +} + +func (tb *Table) maxOutPartItemsSlow() uint64 { + // Determine the amount of free space on tb.path. + d, err := os.Open(tb.path) + if err != nil { + logger.Panicf("FATAL: cannot determine free disk space on %q: %s", tb.path, err) + } + defer fs.MustClose(d) + + fd := d.Fd() + var stat unix.Statfs_t + if err := unix.Fstatfs(int(fd), &stat); err != nil { + logger.Panicf("FATAL: cannot determine free disk space on %q: %s", tb.path, err) + } + freeSpace := stat.Bavail * uint64(stat.Bsize) + + // Calculate the maximum number of items in the output merge part + // by dividing the freeSpace by 4 and by the number of concurrent + // mergeWorkers. + // This assumes each item is compressed into 4 bytes. + return freeSpace / uint64(mergeWorkers) / 4 +} + +var mergeWorkers = func() int { + return runtime.GOMAXPROCS(-1) +}() + +func openParts(path string) ([]*partWrapper, error) { + // Verify that the directory for the parts exists. + d, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("cannot open difrectory: %s", err) + } + defer fs.MustClose(d) + + // Run remaining transactions and cleanup /txn and /tmp directories. + // Snapshots cannot be created yet, so use fakeSnapshotLock. + var fakeSnapshotLock sync.RWMutex + if err := runTransactions(&fakeSnapshotLock, path); err != nil { + return nil, fmt.Errorf("cannot run transactions: %s", err) + } + + txnDir := path + "/txn" + if err := os.RemoveAll(txnDir); err != nil { + return nil, fmt.Errorf("cannot remove %q: %s", txnDir, err) + } + if err := fs.MkdirAllFailIfExist(txnDir); err != nil { + return nil, fmt.Errorf("cannot create %q: %s", txnDir, err) + } + + tmpDir := path + "/tmp" + if err := os.RemoveAll(tmpDir); err != nil { + return nil, fmt.Errorf("cannot remove %q: %s", tmpDir, err) + } + if err := fs.MkdirAllFailIfExist(tmpDir); err != nil { + return nil, fmt.Errorf("cannot create %q: %s", tmpDir, err) + } + + fs.SyncPath(path) + + // Open parts. + fis, err := d.Readdir(-1) + if err != nil { + return nil, fmt.Errorf("cannot read directory: %s", err) + } + var pws []*partWrapper + for _, fi := range fis { + if !fs.IsDirOrSymlink(fi) { + // Skip non-directories. + continue + } + fn := fi.Name() + if isSpecialDir(fn) { + // Skip special dirs. + continue + } + partPath := path + "/" + fn + p, err := openFilePart(partPath) + if err != nil { + mustCloseParts(pws) + return nil, fmt.Errorf("cannot open part %q: %s", partPath, err) + } + pw := &partWrapper{ + p: p, + refCount: 1, + } + pws = append(pws, pw) + } + + return pws, nil +} + +func mustCloseParts(pws []*partWrapper) { + for _, pw := range pws { + if pw.refCount != 1 { + logger.Panicf("BUG: unexpected refCount when closing part %q: %d; want 1", pw.p.path, pw.refCount) + } + pw.p.MustClose() + } +} + +// CreateSnapshotAt creates tb snapshot in the given dstDir. +// +// Snapshot is created using linux hard links, so it is usually created +// very quickly. +func (tb *Table) CreateSnapshotAt(dstDir string) error { + logger.Infof("creating Table snapshot of %q...", tb.path) + startTime := time.Now() + + var err error + srcDir := tb.path + srcDir, err = filepath.Abs(srcDir) + if err != nil { + return fmt.Errorf("cannot obtain absolute dir for %q: %s", srcDir, err) + } + dstDir, err = filepath.Abs(dstDir) + if err != nil { + return fmt.Errorf("cannot obtain absolute dir for %q: %s", dstDir, err) + } + if strings.HasPrefix(dstDir, srcDir+"/") { + return fmt.Errorf("cannot create snapshot %q inside the data dir %q", dstDir, srcDir) + } + + // Flush inmemory items to disk. + tb.flushRawItems(true) + + // The snapshot must be created under the lock in order to prevent from + // concurrent modifications via runTransaction. + tb.snapshotLock.Lock() + defer tb.snapshotLock.Unlock() + + if err := fs.MkdirAllFailIfExist(dstDir); err != nil { + return fmt.Errorf("cannot create snapshot dir %q: %s", dstDir, err) + } + + d, err := os.Open(srcDir) + if err != nil { + return fmt.Errorf("cannot open difrectory: %s", err) + } + defer fs.MustClose(d) + + fis, err := d.Readdir(-1) + if err != nil { + return fmt.Errorf("cannot read directory: %s", err) + } + for _, fi := range fis { + if !fs.IsDirOrSymlink(fi) { + // Skip non-directories. + continue + } + fn := fi.Name() + if isSpecialDir(fn) { + // Skip special dirs. + continue + } + srcPartPath := srcDir + "/" + fn + dstPartPath := dstDir + "/" + fn + if err := fs.HardLinkFiles(srcPartPath, dstPartPath); err != nil { + return fmt.Errorf("cannot create hard links from %q to %q: %s", srcPartPath, dstPartPath, err) + } + } + + fs.SyncPath(dstDir) + parentDir := filepath.Dir(dstDir) + fs.SyncPath(parentDir) + + logger.Infof("created Table snapshot of %q at %q in %s", srcDir, dstDir, time.Since(startTime)) + return nil +} + +func runTransactions(txnLock *sync.RWMutex, path string) error { + txnDir := path + "/txn" + d, err := os.Open(txnDir) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return fmt.Errorf("cannot open %q: %s", txnDir, err) + } + defer fs.MustClose(d) + + fis, err := d.Readdir(-1) + if err != nil { + return fmt.Errorf("cannot read directory %q: %s", d.Name(), err) + } + + // Sort transaction files by id, since transactions must be ordered. + sort.Slice(fis, func(i, j int) bool { + return fis[i].Name() < fis[j].Name() + }) + + for _, fi := range fis { + txnPath := txnDir + "/" + fi.Name() + if err := runTransaction(txnLock, path, txnPath); err != nil { + return fmt.Errorf("cannot run transaction from %q: %s", txnPath, err) + } + } + return nil +} + +func runTransaction(txnLock *sync.RWMutex, pathPrefix, txnPath string) error { + // The transaction must be run under read lock in order to provide + // consistent snapshots with Table.CreateSnapshot(). + txnLock.RLock() + defer txnLock.RUnlock() + + data, err := ioutil.ReadFile(txnPath) + if err != nil { + return fmt.Errorf("cannot read transaction file: %s", err) + } + if len(data) > 0 && data[len(data)-1] == '\n' { + data = data[:len(data)-1] + } + paths := strings.Split(string(data), "\n") + + if len(paths) == 0 { + return fmt.Errorf("empty transaction") + } + rmPaths := paths[:len(paths)-1] + mvPaths := strings.Split(paths[len(paths)-1], " -> ") + if len(mvPaths) != 2 { + return fmt.Errorf("invalid last line in the transaction file: got %q; must contain `srcPath -> dstPath`", paths[len(paths)-1]) + } + + // Remove old paths. It is OK if certain paths don't exist. + for _, path := range rmPaths { + path, err := validatePath(pathPrefix, path) + if err != nil { + return fmt.Errorf("invalid path to remove: %s", err) + } + if err := os.RemoveAll(path); err != nil { + return fmt.Errorf("cannot remove %q: %s", path, err) + } + } + + // Move the new part to new directory. + srcPath := mvPaths[0] + dstPath := mvPaths[1] + srcPath, err = validatePath(pathPrefix, srcPath) + if err != nil { + return fmt.Errorf("invalid source path to rename: %s", err) + } + dstPath, err = validatePath(pathPrefix, dstPath) + if err != nil { + return fmt.Errorf("invalid destination path to rename: %s", err) + } + if fs.IsPathExist(srcPath) { + if err := os.Rename(srcPath, dstPath); err != nil { + return fmt.Errorf("cannot rename %q to %q: %s", srcPath, dstPath, err) + } + } else { + // Verify dstPath exists. + if !fs.IsPathExist(dstPath) { + return fmt.Errorf("cannot find both source and destination paths: %q -> %q", srcPath, dstPath) + } + } + + // Flush pathPrefix directory metadata to the underying storage. + fs.SyncPath(pathPrefix) + + // Remove the transaction file. + if err := os.Remove(txnPath); err != nil { + return fmt.Errorf("cannot remove transaction file %q: %s", txnPath, err) + } + + return nil +} + +func validatePath(pathPrefix, path string) (string, error) { + var err error + + pathPrefix, err = filepath.Abs(pathPrefix) + if err != nil { + return path, fmt.Errorf("cannot determine absolute path for pathPrefix=%q: %s", pathPrefix, err) + } + + path, err = filepath.Abs(path) + if err != nil { + return path, fmt.Errorf("cannot determine absolute path for %q: %s", path, err) + } + if !strings.HasPrefix(path, pathPrefix+"/") { + return path, fmt.Errorf("invalid path %q; must start with %q", path, pathPrefix+"/") + } + return path, nil +} + +// getPartsToMerge returns optimal parts to merge from pws. +// +// if isFinal is set, then merge harder. +// +// The returned parts will contain less than maxItems items. +func getPartsToMerge(pws []*partWrapper, maxItems uint64, isFinal bool) []*partWrapper { + pwsRemaining := make([]*partWrapper, 0, len(pws)) + for _, pw := range pws { + if !pw.isInMerge { + pwsRemaining = append(pwsRemaining, pw) + } + } + maxPartsToMerge := defaultPartsToMerge + var dst []*partWrapper + if isFinal { + for len(dst) == 0 && maxPartsToMerge >= finalPartsToMerge { + dst = appendPartsToMerge(dst[:0], pwsRemaining, maxPartsToMerge, maxItems) + maxPartsToMerge-- + } + } else { + dst = appendPartsToMerge(dst[:0], pwsRemaining, maxPartsToMerge, maxItems) + } + for _, pw := range dst { + if pw.isInMerge { + logger.Panicf("BUG: partWrapper.isInMerge is already set") + } + pw.isInMerge = true + } + return dst +} + +// appendPartsToMerge finds optimal parts to merge from src, appends +// them to dst and returns the result. +func appendPartsToMerge(dst, src []*partWrapper, maxPartsToMerge int, maxItems uint64) []*partWrapper { + if len(src) < 2 { + // There is no need in merging zero or one part :) + return dst + } + if maxPartsToMerge < 2 { + logger.Panicf("BUG: maxPartsToMerge cannot be smaller than 2; got %d", maxPartsToMerge) + } + + // Filter out too big parts. + // This should reduce N for O(n^2) algorithm below. + maxInPartItems := maxItems / 2 + tmp := make([]*partWrapper, 0, len(src)) + for _, pw := range src { + if pw.p.ph.itemsCount > maxInPartItems { + continue + } + tmp = append(tmp, pw) + } + src = tmp + + // Sort src parts by itemsCount. + sort.Slice(src, func(i, j int) bool { return src[i].p.ph.itemsCount < src[j].p.ph.itemsCount }) + + n := maxPartsToMerge + if len(src) < n { + n = len(src) + } + + // Exhaustive search for parts giving the lowest write amplification + // when merged. + var pws []*partWrapper + maxM := float64(0) + for i := 2; i <= n; i++ { + for j := 0; j <= len(src)-i; j++ { + itemsSum := uint64(0) + for _, pw := range src[j : j+i] { + itemsSum += pw.p.ph.itemsCount + } + if itemsSum > maxItems { + continue + } + m := float64(itemsSum) / float64(src[j+i-1].p.ph.itemsCount) + if m < maxM { + continue + } + maxM = m + pws = src[j : j+i] + } + } + + minM := float64(maxPartsToMerge / 2) + if minM < 2 { + minM = 2 + } + if maxM < minM { + // There is no sense in merging parts with too small m. + return dst + } + + return append(dst, pws...) +} + +func removeParts(pws []*partWrapper, partsToRemove map[*partWrapper]bool) ([]*partWrapper, int) { + removedParts := 0 + dst := pws[:0] + for _, pw := range pws { + if partsToRemove[pw] { + removedParts++ + continue + } + dst = append(dst, pw) + } + return dst, removedParts +} + +func isSpecialDir(name string) bool { + // Snapshots and cache dirs aren't used anymore. + // Keep them here for backwards compatibility. + return name == "tmp" || name == "txn" || name == "snapshots" || name == "cache" +} diff --git a/lib/mergeset/table_search.go b/lib/mergeset/table_search.go new file mode 100644 index 000000000..c668c285d --- /dev/null +++ b/lib/mergeset/table_search.go @@ -0,0 +1,223 @@ +package mergeset + +import ( + "bytes" + "container/heap" + "fmt" + "io" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// TableSearch is a reusable cursor used for searching in the Table. +type TableSearch struct { + // Item contains the next item after successful NextItem + // or FirstItemWithPrefix call. + // + // Item contents breaks after the next call to NextItem. + Item []byte + + tb *Table + + pws []*partWrapper + + psPool []partSearch + psHeap partSearchHeap + + err error + + nextItemNoop bool + needClosing bool +} + +func (ts *TableSearch) reset() { + ts.Item = nil + ts.tb = nil + + for i := range ts.pws { + ts.pws[i] = nil + } + ts.pws = ts.pws[:0] + + for i := range ts.psPool { + ts.psPool[i].reset() + } + ts.psPool = ts.psPool[:0] + + for i := range ts.psHeap { + ts.psHeap[i] = nil + } + ts.psHeap = ts.psHeap[:0] + + ts.err = nil + + ts.nextItemNoop = false + ts.needClosing = false +} + +// Init initializes ts for searching in the tb. +// +// MustClose must be called when the ts is no longer needed. +func (ts *TableSearch) Init(tb *Table) { + if ts.needClosing { + logger.Panicf("BUG: missing MustClose call before the next call to Init") + } + + ts.reset() + + ts.tb = tb + ts.needClosing = true + + ts.pws = ts.tb.getParts(ts.pws[:0]) + + // Initialize the psPool. + if n := len(ts.pws) - cap(ts.psPool); n > 0 { + ts.psPool = append(ts.psPool[:cap(ts.psPool)], make([]partSearch, n)...) + } + ts.psPool = ts.psPool[:len(ts.pws)] + for i, pw := range ts.pws { + ts.psPool[i].Init(pw.p) + } +} + +// Seek seeks for the first item greater or equal to k in the ts. +func (ts *TableSearch) Seek(k []byte) { + if err := ts.Error(); err != nil { + // Do nothing on unrecoverable error. + return + } + ts.err = nil + + // Initialize the psHeap. + var errors []error + ts.psHeap = ts.psHeap[:0] + for i := range ts.psPool { + ps := &ts.psPool[i] + ps.Seek(k) + if !ps.NextItem() { + if err := ps.Error(); err != nil { + errors = append(errors, err) + } + continue + } + ts.psHeap = append(ts.psHeap, ps) + } + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + ts.err = fmt.Errorf("cannot seek %q: %s", k, errors[0]) + return + } + if len(ts.psHeap) == 0 { + ts.err = io.EOF + return + } + heap.Init(&ts.psHeap) + ts.Item = ts.psHeap[0].Item + ts.nextItemNoop = true +} + +// FirstItemWithPrefix seeks for the first item with the given prefix in the ts. +// +// It returns io.EOF if such an item doesn't exist. +func (ts *TableSearch) FirstItemWithPrefix(prefix []byte) error { + ts.Seek(prefix) + if !ts.NextItem() { + if err := ts.Error(); err != nil { + return err + } + return io.EOF + } + if err := ts.Error(); err != nil { + return err + } + if !bytes.HasPrefix(ts.Item, prefix) { + return io.EOF + } + return nil +} + +// NextItem advances to the next item. +func (ts *TableSearch) NextItem() bool { + if ts.err != nil { + return false + } + if ts.nextItemNoop { + ts.nextItemNoop = false + return true + } + + ts.err = ts.nextBlock() + if ts.err != nil { + if ts.err != io.EOF { + ts.err = fmt.Errorf("cannot obtain the next block to search in the table: %s", ts.err) + } + return false + } + return true +} + +func (ts *TableSearch) nextBlock() error { + psMin := ts.psHeap[0] + if psMin.NextItem() { + heap.Fix(&ts.psHeap, 0) + ts.Item = ts.psHeap[0].Item + return nil + } + + if err := psMin.Error(); err != nil { + return err + } + + heap.Pop(&ts.psHeap) + + if len(ts.psHeap) == 0 { + return io.EOF + } + + ts.Item = ts.psHeap[0].Item + return nil +} + +// Error returns the last error in ts. +func (ts *TableSearch) Error() error { + if ts.err == io.EOF { + return nil + } + return ts.err +} + +// MustClose closes the ts. +func (ts *TableSearch) MustClose() { + if !ts.needClosing { + logger.Panicf("BUG: missing Init call before MustClose call") + } + ts.tb.putParts(ts.pws) + ts.reset() +} + +type partSearchHeap []*partSearch + +func (psh *partSearchHeap) Len() int { + return len(*psh) +} + +func (psh *partSearchHeap) Less(i, j int) bool { + x := *psh + return string(x[i].Item) < string(x[j].Item) +} + +func (psh *partSearchHeap) Swap(i, j int) { + x := *psh + x[i], x[j] = x[j], x[i] +} + +func (psh *partSearchHeap) Push(x interface{}) { + *psh = append(*psh, x.(*partSearch)) +} + +func (psh *partSearchHeap) Pop() interface{} { + a := *psh + v := a[len(a)-1] + *psh = a[:len(a)-1] + return v +} diff --git a/lib/mergeset/table_search_test.go b/lib/mergeset/table_search_test.go new file mode 100644 index 000000000..fb09d5f2b --- /dev/null +++ b/lib/mergeset/table_search_test.go @@ -0,0 +1,165 @@ +package mergeset + +import ( + "fmt" + "math/rand" + "os" + "sort" + "testing" + "time" +) + +func TestMain(m *testing.M) { + n := m.Run() + os.Exit(n) +} + +func TestTableSearchSerial(t *testing.T) { + const path = "TestTableSearchSerial" + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + const itemsCount = 1e5 + + items := func() []string { + tb, items, err := newTestTable(path, itemsCount) + if err != nil { + t.Fatalf("cannot create test table: %s", err) + } + defer tb.MustClose() + if err := testTableSearchSerial(tb, items); err != nil { + t.Fatalf("unexpected error: %s", err) + } + return items + }() + + func() { + // Re-open the table and verify the search works. + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open table: %s", err) + } + defer tb.MustClose() + if err := testTableSearchSerial(tb, items); err != nil { + t.Fatalf("unexpected error: %s", err) + } + }() +} + +func TestTableSearchConcurrent(t *testing.T) { + const path = "TestTableSearchConcurrent" + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + const itemsCount = 1e5 + items := func() []string { + tb, items, err := newTestTable(path, itemsCount) + if err != nil { + t.Fatalf("cannot create test table: %s", err) + } + defer tb.MustClose() + if err := testTableSearchConcurrent(tb, items); err != nil { + t.Fatalf("unexpected error: %s", err) + } + return items + }() + + // Re-open the table and verify the search works. + func() { + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open table: %s", err) + } + defer tb.MustClose() + if err := testTableSearchConcurrent(tb, items); err != nil { + t.Fatalf("unexpected error: %s", err) + } + }() +} + +func testTableSearchConcurrent(tb *Table, items []string) error { + const goroutines = 5 + ch := make(chan error, goroutines) + for i := 0; i < goroutines; i++ { + go func() { + ch <- testTableSearchSerial(tb, items) + }() + } + for i := 0; i < goroutines; i++ { + select { + case err := <-ch: + if err != nil { + return fmt.Errorf("unexpected error: %s", err) + } + case <-time.After(time.Second * 5): + return fmt.Errorf("timeout") + } + } + return nil +} + +func testTableSearchSerial(tb *Table, items []string) error { + var ts TableSearch + ts.Init(tb) + for _, key := range []string{ + "", + "123", + "9", + "892", + "2384329", + "fdsjflfdf", + items[0], + items[len(items)-1], + items[len(items)/2], + } { + n := sort.Search(len(items), func(i int) bool { + return key <= items[i] + }) + ts.Seek([]byte(key)) + for n < len(items) { + item := items[n] + if !ts.NextItem() { + return fmt.Errorf("missing item %q at position %d when searching for %q", item, n, key) + } + if string(ts.Item) != item { + return fmt.Errorf("unexpected item found at position %d when searching for %q; got %q; want %q", n, key, ts.Item, item) + } + n++ + } + if ts.NextItem() { + return fmt.Errorf("superflouos item found at position %d when searching for %q: %q", n, key, ts.Item) + } + if err := ts.Error(); err != nil { + return fmt.Errorf("unexpected error when searching for %q: %s", key, err) + } + } + ts.MustClose() + return nil +} + +func newTestTable(path string, itemsCount int) (*Table, []string, error) { + tb, err := OpenTable(path) + if err != nil { + return nil, nil, fmt.Errorf("cannot open table: %s", err) + } + items := make([]string, itemsCount) + for i := 0; i < itemsCount; i++ { + item := fmt.Sprintf("%d:%d", rand.Intn(1e9), i) + if err := tb.AddItems([][]byte{[]byte(item)}); err != nil { + return nil, nil, fmt.Errorf("cannot add item: %s", err) + } + items[i] = item + } + tb.DebugFlush() + + sort.Strings(items) + return tb, items, nil +} diff --git a/lib/mergeset/table_search_timing_test.go b/lib/mergeset/table_search_timing_test.go new file mode 100644 index 000000000..0ab2514d1 --- /dev/null +++ b/lib/mergeset/table_search_timing_test.go @@ -0,0 +1,111 @@ +package mergeset + +import ( + "bytes" + "fmt" + "math/rand" + "os" + "testing" +) + +func BenchmarkTableSearch(b *testing.B) { + for _, itemsCount := range []int{1e5, 1e6, 1e7} { + b.Run(fmt.Sprintf("itemsCount-%d", itemsCount), func(b *testing.B) { + benchmarkTableSearch(b, itemsCount) + }) + } +} + +func benchmarkTableSearch(b *testing.B, itemsCount int) { + path := fmt.Sprintf("BenchmarkTableSearch-%d", itemsCount) + if err := os.RemoveAll(path); err != nil { + b.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + tb, items, err := newTestTable(path, itemsCount) + if err != nil { + panic(fmt.Errorf("cannot create test table at %q with %d items: %s", path, itemsCount, err)) + } + + // Force finishing pending merges + tb.MustClose() + tb, err = OpenTable(path) + defer tb.MustClose() + + keys := make([][]byte, len(items)) + for i, item := range items { + keys[i] = []byte(item) + } + + b.Run("sequential-keys-exact", func(b *testing.B) { + benchmarkTableSearchKeys(b, tb, keys, 0) + }) + b.Run("sequential-keys-without-siffux", func(b *testing.B) { + benchmarkTableSearchKeys(b, tb, keys, 4) + }) + + randKeys := append([][]byte{}, keys...) + rand.Shuffle(len(randKeys), func(i, j int) { + randKeys[i], randKeys[j] = randKeys[j], randKeys[i] + }) + b.Run("random-keys-exact", func(b *testing.B) { + benchmarkTableSearchKeys(b, tb, randKeys, 0) + }) + b.Run("random-keys-without-siffux", func(b *testing.B) { + benchmarkTableSearchKeys(b, tb, randKeys, 4) + }) +} + +func benchmarkTableSearchKeys(b *testing.B, tb *Table, keys [][]byte, stripSuffix int) { + for _, rowsToScan := range []int{1, 10, 100, 1000} { + b.Run(fmt.Sprintf("rowsToScan-%d", rowsToScan), func(b *testing.B) { + benchmarkTableSearchKeysExt(b, tb, keys, stripSuffix, rowsToScan) + }) + } +} + +func benchmarkTableSearchKeysExt(b *testing.B, tb *Table, keys [][]byte, stripSuffix, rowsToScan int) { + searchKeysCount := 1000 + if searchKeysCount >= len(keys) { + searchKeysCount = len(keys) - 1 + } + + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(searchKeysCount * rowsToScan)) + b.RunParallel(func(pb *testing.PB) { + var ts TableSearch + ts.Init(tb) + defer ts.MustClose() + for pb.Next() { + startIdx := rand.Intn(len(keys) - searchKeysCount) + searchKeys := keys[startIdx : startIdx+searchKeysCount] + for i, key := range searchKeys { + searchKey := key + if len(searchKey) < stripSuffix { + searchKey = nil + } else { + searchKey = searchKey[:len(searchKey)-stripSuffix] + } + ts.Seek(searchKey) + if !ts.NextItem() { + panic(fmt.Errorf("BUG: NextItem must return true for searchKeys[%d]=%q; err=%v", i, searchKey, ts.Error())) + } + if !bytes.HasPrefix(ts.Item, searchKey) { + panic(fmt.Errorf("BUG: unexpected item found for searchKey[%d]=%q; got %q; want %q", i, searchKey, ts.Item, key)) + } + for j := 1; j < rowsToScan; j++ { + if !ts.NextItem() { + break + } + } + if err := ts.Error(); err != nil { + panic(fmt.Errorf("BUG: unexpected error for searchKeys[%d]=%q: %s", i, searchKey, err)) + } + } + } + }) +} diff --git a/lib/mergeset/table_test.go b/lib/mergeset/table_test.go new file mode 100644 index 000000000..aeb658c77 --- /dev/null +++ b/lib/mergeset/table_test.go @@ -0,0 +1,283 @@ +package mergeset + +import ( + "bytes" + "fmt" + "os" + "sync" + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +func TestTableOpenClose(t *testing.T) { + const path = "TestTableOpenClose" + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + // Create a new table + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot create new table: %s", err) + } + + // Close it + tb.MustClose() + + // Re-open created table multiple times. + for i := 0; i < 10; i++ { + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open created table: %s", err) + } + tb.MustClose() + } +} + +func TestTableOpenMultipleTimes(t *testing.T) { + const path = "TestTableOpenMultipleTimes" + defer func() { + _ = os.RemoveAll(path) + }() + + tb1, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open table: %s", err) + } + defer tb1.MustClose() + + for i := 0; i < 10; i++ { + tb2, err := OpenTable(path) + if err == nil { + tb2.MustClose() + t.Fatalf("expecting non-nil error when opening already opened table") + } + } +} + +func TestTableAddItemSerial(t *testing.T) { + const path = "TestTableAddItemSerial" + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + + const itemsCount = 1e5 + testAddItemsSerial(tb, itemsCount) + + // Verify items count after pending items flush. + tb.DebugFlush() + + var m TableMetrics + tb.UpdateMetrics(&m) + if m.ItemsCount != itemsCount { + t.Fatalf("unexpected itemsCount; got %d; want %v", m.ItemsCount, itemsCount) + } + + tb.MustClose() + + // Re-open the table and make sure ItemsCount remains the same. + testReopenTable(t, path, itemsCount) + + // Add more items in order to verify merge between inmemory parts and file-based parts. + tb, err = OpenTable(path) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + const moreItemsCount = itemsCount * 3 + testAddItemsSerial(tb, moreItemsCount) + tb.MustClose() + + // Re-open the table and verify ItemsCount again. + testReopenTable(t, path, itemsCount+moreItemsCount) +} + +func testAddItemsSerial(tb *Table, itemsCount int) { + for i := 0; i < itemsCount; i++ { + item := getRandomBytes() + if len(item) > maxInmemoryBlockSize { + item = item[:maxInmemoryBlockSize] + } + if err := tb.AddItems([][]byte{item}); err != nil { + logger.Panicf("BUG: cannot add item to table: %s", err) + } + } +} + +func TestTableCreateSnapshotAt(t *testing.T) { + const path = "TestTableCreateSnapshotAt" + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + defer tb.MustClose() + + // Write a lot of items into the table, so background merges would start. + const itemsCount = 3e5 + for i := 0; i < itemsCount; i++ { + item := []byte(fmt.Sprintf("item %d", i)) + if err := tb.AddItems([][]byte{item}); err != nil { + t.Fatalf("cannot add item to table: %s", err) + } + } + tb.DebugFlush() + + // Create multiple snapshots. + snapshot1 := path + "-test-snapshot1" + if err := tb.CreateSnapshotAt(snapshot1); err != nil { + t.Fatalf("cannot create snapshot1: %s", err) + } + snapshot2 := path + "-test-snapshot2" + if err := tb.CreateSnapshotAt(snapshot2); err != nil { + t.Fatalf("cannot create snapshot2: %s", err) + } + defer func() { + _ = os.RemoveAll(snapshot1) + _ = os.RemoveAll(snapshot2) + }() + + // Verify snapshots contain all the data. + tb1, err := OpenTable(snapshot1) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + defer tb1.MustClose() + + tb2, err := OpenTable(snapshot2) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + defer tb2.MustClose() + + var ts, ts1, ts2 TableSearch + ts.Init(tb) + ts1.Init(tb1) + defer ts1.MustClose() + ts2.Init(tb2) + defer ts2.MustClose() + for i := 0; i < itemsCount; i++ { + key := []byte(fmt.Sprintf("item %d", i)) + if err := ts.FirstItemWithPrefix(key); err != nil { + t.Fatalf("cannot find item[%d]=%q in the original table: %s", i, key, err) + } + if !bytes.Equal(key, ts.Item) { + t.Fatalf("unexpected item found for key=%q in the original table; got %q", key, ts.Item) + } + if err := ts1.FirstItemWithPrefix(key); err != nil { + t.Fatalf("cannot find item[%d]=%q in snapshot1: %s", i, key, err) + } + if !bytes.Equal(key, ts1.Item) { + t.Fatalf("unexpected item found for key=%q in snapshot1; got %q", key, ts1.Item) + } + if err := ts2.FirstItemWithPrefix(key); err != nil { + t.Fatalf("cannot find item[%d]=%q in snapshot2: %s", i, key, err) + } + if !bytes.Equal(key, ts2.Item) { + t.Fatalf("unexpected item found for key=%q in snapshot2; got %q", key, ts2.Item) + } + } +} + +func TestTableAddItemsConcurrent(t *testing.T) { + const path = "TestTableAddItemsConcurrent" + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + + const itemsCount = 1e5 + testAddItemsConcurrent(tb, itemsCount) + + // Verify items count after pending items flush. + tb.DebugFlush() + var m TableMetrics + tb.UpdateMetrics(&m) + if m.ItemsCount != itemsCount { + t.Fatalf("unexpected itemsCount; got %d; want %v", m.ItemsCount, itemsCount) + } + + tb.MustClose() + + // Re-open the table and make sure ItemsCount remains the same. + testReopenTable(t, path, itemsCount) + + // Add more items in order to verify merge between inmemory parts and file-based parts. + tb, err = OpenTable(path) + if err != nil { + t.Fatalf("cannot open %q: %s", path, err) + } + const moreItemsCount = itemsCount * 3 + testAddItemsConcurrent(tb, moreItemsCount) + tb.MustClose() + + // Re-open the table and verify ItemsCount again. + testReopenTable(t, path, itemsCount+moreItemsCount) +} + +func testAddItemsConcurrent(tb *Table, itemsCount int) { + const goroutinesCount = 6 + workCh := make(chan int, itemsCount) + var wg sync.WaitGroup + for i := 0; i < goroutinesCount; i++ { + wg.Add(1) + go func() { + defer wg.Done() + for range workCh { + item := getRandomBytes() + if len(item) > maxInmemoryBlockSize { + item = item[:maxInmemoryBlockSize] + } + if err := tb.AddItems([][]byte{item}); err != nil { + logger.Panicf("BUG: cannot add item to table: %s", err) + } + } + }() + } + for i := 0; i < itemsCount; i++ { + workCh <- i + } + close(workCh) + wg.Wait() +} + +func testReopenTable(t *testing.T, path string, itemsCount int) { + t.Helper() + + for i := 0; i < 10; i++ { + tb, err := OpenTable(path) + if err != nil { + t.Fatalf("cannot re-open %q: %s", path, err) + } + var m TableMetrics + tb.UpdateMetrics(&m) + if m.ItemsCount != uint64(itemsCount) { + t.Fatalf("unexpected itemsCount after re-opening; got %d; want %v", m.ItemsCount, itemsCount) + } + tb.MustClose() + } +} diff --git a/lib/netutil/conn.go b/lib/netutil/conn.go new file mode 100644 index 000000000..a80054cab --- /dev/null +++ b/lib/netutil/conn.go @@ -0,0 +1,119 @@ +package netutil + +import ( + "fmt" + "io" + "net" + "sync/atomic" + "time" + + "github.com/VictoriaMetrics/metrics" +) + +type connMetrics struct { + readCalls *metrics.Counter + readBytes *metrics.Counter + readErrors *metrics.Counter + readTimeouts *metrics.Counter + + writeCalls *metrics.Counter + writtenBytes *metrics.Counter + writeErrors *metrics.Counter + writeTimeouts *metrics.Counter + + closeErrors *metrics.Counter + + conns *metrics.Counter +} + +func (cm *connMetrics) init(group, name, addr string) { + cm.readCalls = metrics.NewCounter(fmt.Sprintf(`%s_read_calls_total{name=%q, addr=%q}`, group, name, addr)) + cm.readBytes = metrics.NewCounter(fmt.Sprintf(`%s_read_bytes_total{name=%q, addr=%q}`, group, name, addr)) + cm.readErrors = metrics.NewCounter(fmt.Sprintf(`%s_errors_total{name=%q, addr=%q, type="read"}`, group, name, addr)) + cm.readTimeouts = metrics.NewCounter(fmt.Sprintf(`%s_read_timeouts_total{name=%q, addr=%q}`, group, name, addr)) + + cm.writeCalls = metrics.NewCounter(fmt.Sprintf(`%s_write_calls_total{name=%q, addr=%q}`, group, name, addr)) + cm.writtenBytes = metrics.NewCounter(fmt.Sprintf(`%s_written_bytes_total{name=%q, addr=%q}`, group, name, addr)) + cm.writeErrors = metrics.NewCounter(fmt.Sprintf(`%s_errors_total{name=%q, addr=%q, type="write"}`, group, name, addr)) + cm.writeTimeouts = metrics.NewCounter(fmt.Sprintf(`%s_write_timeouts_total{name=%q, addr=%q}`, group, name, addr)) + + cm.closeErrors = metrics.NewCounter(fmt.Sprintf(`%s_errors_total{name=%q, addr=%q, type="close"}`, group, name, addr)) + + cm.conns = metrics.NewCounter(fmt.Sprintf(`%s_conns{name=%q, addr=%q}`, group, name, addr)) +} + +type statConn struct { + readTimeout time.Duration + lastReadTime time.Time + + writeTimeout time.Duration + lastWriteTime time.Time + + net.Conn + + cm *connMetrics + + closeCalls uint64 +} + +func (sc *statConn) Read(p []byte) (int, error) { + if sc.readTimeout > 0 { + t := time.Now() + if t.Sub(sc.lastReadTime) > sc.readTimeout>>4 { + d := t.Add(sc.readTimeout) + if err := sc.Conn.SetReadDeadline(d); err != nil { + // This error may occur when the client closes the connection before setting the deadline + return 0, err + } + } + } + + n, err := sc.Conn.Read(p) + sc.cm.readCalls.Inc() + sc.cm.readBytes.Add(n) + if err != nil && err != io.EOF { + sc.cm.readErrors.Inc() + if ne, ok := err.(net.Error); ok && ne.Timeout() { + sc.cm.readTimeouts.Inc() + } + } + return n, err +} + +func (sc *statConn) Write(p []byte) (int, error) { + if sc.writeTimeout > 0 { + t := time.Now() + if t.Sub(sc.lastWriteTime) > sc.writeTimeout>>4 { + d := t.Add(sc.writeTimeout) + if err := sc.Conn.SetWriteDeadline(d); err != nil { + // This error may accour when the client closes the connection before setting the deadline + return 0, err + } + } + } + + n, err := sc.Conn.Write(p) + sc.cm.writeCalls.Inc() + sc.cm.writtenBytes.Add(n) + if err != nil { + sc.cm.writeErrors.Inc() + if ne, ok := err.(net.Error); ok && ne.Timeout() { + sc.cm.writeTimeouts.Inc() + } + } + return n, err +} + +func (sc *statConn) Close() error { + n := atomic.AddUint64(&sc.closeCalls, 1) + if n > 1 { + // The connection has been already closed. + return nil + } + err := sc.Conn.Close() + sc.cm.conns.Dec() + if err != nil { + sc.cm.closeErrors.Inc() + } + return err +} diff --git a/lib/netutil/tcplistener.go b/lib/netutil/tcplistener.go new file mode 100644 index 000000000..0e3d17bb4 --- /dev/null +++ b/lib/netutil/tcplistener.go @@ -0,0 +1,80 @@ +package netutil + +import ( + "fmt" + "net" + "time" + + "github.com/VictoriaMetrics/metrics" +) + +// NewTCPListener returns new TCP listener for the given addr. +// +// name is used for exported metrics. Each listener in the program must have +// distinct name. +func NewTCPListener(name, addr string) (*TCPListener, error) { + ln, err := net.Listen("tcp4", addr) + if err != nil { + return nil, err + } + tln := &TCPListener{ + Listener: ln, + + accepts: metrics.NewCounter(fmt.Sprintf(`vm_tcplistener_accepts_total{name=%q, addr=%q}`, name, addr)), + acceptErrors: metrics.NewCounter(fmt.Sprintf(`vm_tcplistener_errors_total{name=%q, addr=%q, type="accept"}`, name, addr)), + } + tln.connMetrics.init("vm_tcplistener", name, addr) + return tln, err +} + +// TCPListener listens for the addr passed to NewTCPListener. +// +// It also gathers various stats for the accepted connections. +type TCPListener struct { + // ReadTimeout is timeout for each Read call on accepted conns. + // + // By default it isn't set. + // + // Set ReadTimeout before calling Accept the first time. + ReadTimeout time.Duration + + // WriteTimeout is timeout for each Write call on accepted conns. + // + // By default it isn't set. + // + // Set WriteTimeout before calling Accept the first time. + WriteTimeout time.Duration + + net.Listener + + name string + + accepts *metrics.Counter + acceptErrors *metrics.Counter + + connMetrics +} + +// Accept accepts connections from the addr passed to NewTCPListener. +func (ln *TCPListener) Accept() (net.Conn, error) { + for { + conn, err := ln.Listener.Accept() + ln.accepts.Inc() + if err != nil { + if ne, ok := err.(net.Error); ok && ne.Temporary() { + continue + } + ln.acceptErrors.Inc() + return nil, err + } + ln.conns.Inc() + sc := &statConn{ + readTimeout: ln.ReadTimeout, + writeTimeout: ln.WriteTimeout, + + Conn: conn, + cm: &ln.connMetrics, + } + return sc, nil + } +} diff --git a/lib/procutil/signal.go b/lib/procutil/signal.go new file mode 100644 index 000000000..9a3713480 --- /dev/null +++ b/lib/procutil/signal.go @@ -0,0 +1,16 @@ +package procutil + +import ( + "os" + "os/signal" + "syscall" +) + +// WaitForSigterm waits fro either SIGTERM or SIGINT +// +// Returns the caught signal. +func WaitForSigterm() os.Signal { + ch := make(chan os.Signal, 1) + signal.Notify(ch, os.Interrupt, syscall.SIGTERM) + return <-ch +} diff --git a/lib/prompb/README.md b/lib/prompb/README.md new file mode 100644 index 000000000..d2aa933ef --- /dev/null +++ b/lib/prompb/README.md @@ -0,0 +1,14 @@ +The compiled protobufs are version controlled and you won't normally need to +re-compile them when building Prometheus. + +If however you have modified the defs and do need to re-compile, run +`./scripts/genproto.sh` from the parent dir. + +In order for the script to run, you'll need `protoc` (version 3.5) in your +PATH, and the following Go packages installed: + +- github.com/gogo/protobuf +- github.com/gogo/protobuf/protoc-gen-gogofast +- github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/ +- github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger +- golang.org/x/tools/cmd/goimports diff --git a/lib/prompb/remote.pb.go b/lib/prompb/remote.pb.go new file mode 100644 index 000000000..a141f3e91 --- /dev/null +++ b/lib/prompb/remote.pb.go @@ -0,0 +1,210 @@ +// Code generated from remote.proto + +package prompb + +import ( + "fmt" + "io" +) + +// WriteRequest represents Prometheus remote write API request +type WriteRequest struct { + Timeseries []TimeSeries + + labelsPool []Label + samplesPool []Sample +} + +// Unmarshal unmarshals m from dAtA. +func (m *WriteRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowRemote + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: WriteRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WriteRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Timeseries", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowRemote + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return errInvalidLengthRemote + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if cap(m.Timeseries) > len(m.Timeseries) { + m.Timeseries = m.Timeseries[:len(m.Timeseries)+1] + } else { + m.Timeseries = append(m.Timeseries, TimeSeries{}) + } + ts := &m.Timeseries[len(m.Timeseries)-1] + var err error + m.labelsPool, m.samplesPool, err = ts.Unmarshal(dAtA[iNdEx:postIndex], m.labelsPool, m.samplesPool) + if err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRemote(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return errInvalidLengthRemote + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipRemote(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowRemote + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowRemote + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowRemote + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, errInvalidLengthRemote + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + start := iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowRemote + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipRemote(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + errInvalidLengthRemote = fmt.Errorf("proto: negative length found during unmarshaling") + errIntOverflowRemote = fmt.Errorf("proto: integer overflow") +) diff --git a/lib/prompb/remote.proto b/lib/prompb/remote.proto new file mode 100644 index 000000000..cc146ed0f --- /dev/null +++ b/lib/prompb/remote.proto @@ -0,0 +1,23 @@ +// Copyright 2016 Prometheus Team +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; +package prometheus; + +option go_package = "prompb"; + +import "types.proto"; + +message WriteRequest { + repeated prometheus.TimeSeries timeseries = 1 [(gogoproto.nullable) = false]; +} diff --git a/lib/prompb/types.pb.go b/lib/prompb/types.pb.go new file mode 100644 index 000000000..0bc4d8502 --- /dev/null +++ b/lib/prompb/types.pb.go @@ -0,0 +1,455 @@ +// Code generated manually from types.proto + +package prompb + +import ( + "encoding/binary" + "fmt" + "io" + "math" +) + +// Sample is a timeseries sample. +type Sample struct { + Value float64 + Timestamp int64 +} + +// TimeSeries is a timeseries. +type TimeSeries struct { + Labels []Label + Samples []Sample +} + +// Label is a timeseries label +type Label struct { + Name []byte + Value []byte +} + +// Unmarshal unmarshals sample from dAtA. +func (m *Sample) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Sample: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Sample: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Value = float64(math.Float64frombits(v)) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType) + } + m.Timestamp = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timestamp |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return errInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +// Unmarshal unmarshals timeseries from dAtA. +func (m *TimeSeries) Unmarshal(dAtA []byte, dstLabels []Label, dstSamples []Sample) ([]Label, []Sample, error) { + labelsStart := len(dstLabels) + samplesStart := len(dstSamples) + + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return dstLabels, dstSamples, errIntOverflowTypes + } + if iNdEx >= l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return dstLabels, dstSamples, fmt.Errorf("proto: TimeSeries: wiretype end group for non-group") + } + if fieldNum <= 0 { + return dstLabels, dstSamples, fmt.Errorf("proto: TimeSeries: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return dstLabels, dstSamples, fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return dstLabels, dstSamples, errIntOverflowTypes + } + if iNdEx >= l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return dstLabels, dstSamples, errInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + if cap(dstLabels) > len(dstLabels) { + dstLabels = dstLabels[:len(dstLabels)+1] + } else { + dstLabels = append(dstLabels, Label{}) + } + lb := &dstLabels[len(dstLabels)-1] + if err := lb.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return dstLabels, dstSamples, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return dstLabels, dstSamples, fmt.Errorf("proto: wrong wireType = %d for field Samples", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return dstLabels, dstSamples, errIntOverflowTypes + } + if iNdEx >= l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return dstLabels, dstSamples, errInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + if cap(dstSamples) > len(dstSamples) { + dstSamples = dstSamples[:len(dstSamples)+1] + } else { + dstSamples = append(dstSamples, Sample{}) + } + s := &dstSamples[len(dstSamples)-1] + if err := s.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return dstLabels, dstSamples, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return dstLabels, dstSamples, err + } + if skippy < 0 { + return dstLabels, dstSamples, errInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return dstLabels, dstSamples, io.ErrUnexpectedEOF + } + + m.Labels = dstLabels[labelsStart:] + m.Samples = dstSamples[samplesStart:] + return dstLabels, dstSamples, nil +} + +// Unmarshal unmarshals Label from dAtA. +func (m *Label) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Label: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Label: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return errInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = dAtA[iNdEx:postIndex] + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return errIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return errInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = dAtA[iNdEx:postIndex] + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return errInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func skipTypes(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, errInvalidLengthTypes + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + start := iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, errIntOverflowTypes + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipTypes(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + errInvalidLengthTypes = fmt.Errorf("proto: negative length found during unmarshaling") + errIntOverflowTypes = fmt.Errorf("proto: integer overflow") +) diff --git a/lib/prompb/types.proto b/lib/prompb/types.proto new file mode 100644 index 000000000..a3ce85b41 --- /dev/null +++ b/lib/prompb/types.proto @@ -0,0 +1,34 @@ +// Copyright 2017 Prometheus Team +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; +package prometheus; + +option go_package = "prompb"; + +import "gogoproto/gogo.proto"; + +message Sample { + double value = 1; + int64 timestamp = 2; +} + +message TimeSeries { + repeated Label labels = 1 [(gogoproto.nullable) = false]; + repeated Sample samples = 2 [(gogoproto.nullable) = false]; +} + +message Label { + string name = 1; + string value = 2; +} diff --git a/lib/prompb/util.go b/lib/prompb/util.go new file mode 100644 index 000000000..7dbccf9f7 --- /dev/null +++ b/lib/prompb/util.go @@ -0,0 +1,72 @@ +package prompb + +import ( + "fmt" + "io" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/golang/snappy" +) + +// ReadSnappy reads r, unpacks it using snappy, appends it to dst +// and returns the result. +func ReadSnappy(dst []byte, r io.Reader, maxSize int64) ([]byte, error) { + bb := bodyBufferPool.Get() + bb.B = bb.B[:0] + cb := copyBufferPool.Get() + cb.B = bytesutil.Resize(cb.B, 16*1024) + lr := io.LimitReader(r, maxSize+1) + reqLen, err := io.CopyBuffer(bb, lr, cb.B) + copyBufferPool.Put(cb) + if err != nil { + bodyBufferPool.Put(bb) + return dst, fmt.Errorf("cannot read compressed request: %s", err) + } + if reqLen > maxSize { + return dst, fmt.Errorf("too big packed request; mustn't exceed %d bytes", maxSize) + } + + buf := dst[len(dst):cap(dst)] + buf, err = snappy.Decode(buf, bb.B) + bodyBufferPool.Put(bb) + if err != nil { + err = fmt.Errorf("cannot decompress request with length %d: %s", reqLen, err) + return dst, err + } + if int64(len(buf)) > maxSize { + return dst, fmt.Errorf("too big unpacked request; musn't exceed %d bytes", maxSize) + } + if len(buf) > 0 && len(dst) < cap(dst) && &buf[0] == &dst[len(dst):cap(dst)][0] { + dst = dst[:len(dst)+len(buf)] + } else { + dst = append(dst, buf...) + } + return dst, nil +} + +var bodyBufferPool bytesutil.ByteBufferPool +var copyBufferPool bytesutil.ByteBufferPool + +// Reset resets wr. +func (wr *WriteRequest) Reset() { + for i := range wr.Timeseries { + ts := &wr.Timeseries[i] + ts.Labels = nil + ts.Samples = nil + } + wr.Timeseries = wr.Timeseries[:0] + + for i := range wr.labelsPool { + lb := &wr.labelsPool[i] + lb.Name = nil + lb.Value = nil + } + wr.labelsPool = wr.labelsPool[:0] + + for i := range wr.samplesPool { + s := &wr.samplesPool[i] + s.Value = 0 + s.Timestamp = 0 + } + wr.samplesPool = wr.samplesPool[:0] +} diff --git a/lib/storage/block.go b/lib/storage/block.go new file mode 100644 index 000000000..f258f9393 --- /dev/null +++ b/lib/storage/block.go @@ -0,0 +1,276 @@ +package storage + +import ( + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +const ( + // The maximum size of values in the block. + maxBlockSize = 64 * 1024 + + // The maximum number of rows per block. + maxRowsPerBlock = 8 * 1024 +) + +// Block represents a block of time series values for a single TSID. +type Block struct { + bh blockHeader + + // nextIdx is the next row index for timestamps and values. + nextIdx int + + timestamps []int64 + values []int64 + + // Marshaled representation of block header. + headerData []byte + + // Marshaled representation of timestamps. + timestampsData []byte + + // Marshaled representation of values. + valuesData []byte +} + +// Reset resets b. +func (b *Block) Reset() { + b.bh = blockHeader{} + b.nextIdx = 0 + b.timestamps = b.timestamps[:0] + b.values = b.values[:0] + + b.headerData = b.headerData[:0] + b.timestampsData = b.timestampsData[:0] + b.valuesData = b.valuesData[:0] +} + +// CopyFrom copies src to b. +func (b *Block) CopyFrom(src *Block) { + b.bh = src.bh + b.nextIdx = 0 + b.timestamps = append(b.timestamps[:0], src.timestamps[src.nextIdx:]...) + b.values = append(b.values[:0], src.values[src.nextIdx:]...) + + b.headerData = append(b.headerData[:0], src.headerData...) + b.timestampsData = append(b.timestampsData[:0], src.timestampsData...) + b.valuesData = append(b.valuesData[:0], src.valuesData...) +} + +func getBlock() *Block { + v := blockPool.Get() + if v == nil { + return &Block{} + } + return v.(*Block) +} + +func putBlock(b *Block) { + b.Reset() + blockPool.Put(b) +} + +var blockPool sync.Pool + +func (b *Block) fixupTimestamps() { + b.bh.MinTimestamp = b.timestamps[b.nextIdx] + b.bh.MaxTimestamp = b.timestamps[len(b.timestamps)-1] +} + +// RowsCount returns the number of rows in the block. +func (b *Block) RowsCount() int { + return int(b.bh.RowsCount) +} + +// Values returns b values. +func (b *Block) Values() []int64 { + return b.values +} + +// Timestamps returns b timestamps. +func (b *Block) Timestamps() []int64 { + return b.timestamps +} + +// Scale returns the decimal scale used for encoding values in the block. +func (b *Block) Scale() int16 { + return b.bh.Scale +} + +// Init initializes b with the given tsid, timestamps, values and scale. +func (b *Block) Init(tsid *TSID, timestamps, values []int64, scale int16, precisionBits uint8) { + b.Reset() + b.bh.TSID = *tsid + b.bh.Scale = scale + b.bh.PrecisionBits = precisionBits + b.timestamps = append(b.timestamps[:0], timestamps...) + b.values = append(b.values[:0], values...) +} + +// nextRow advances to the next row. +// +// Returns false if there are no more rows in the block. +func (b *Block) nextRow() bool { + if b.nextIdx == len(b.values) { + return false + } + b.nextIdx++ + return true +} + +// assertUnmarshaled makes sure the block is unmarshaled. +func (b *Block) assertUnmarshaled() { + if len(b.valuesData) > 0 { + logger.Panicf("BUG: valuesData must be empty; got %d bytes", len(b.valuesData)) + } + if len(b.timestampsData) > 0 { + logger.Panicf("BUG: timestampsData must be empty; got %d bytes", len(b.timestampsData)) + } + if len(b.values) != len(b.timestamps) { + logger.Panicf("BUG: the number of values must match the number of timestamps; got %d vs %d", len(b.values), len(b.timestamps)) + } + if b.nextIdx > len(b.values) { + logger.Panicf("BUG: nextIdx cannot exceed the number of values; got %d vs %d", b.nextIdx, len(b.values)) + } +} + +// assertMergeable makes sure b and ib are mergeable, i.e. they have the same +// tsid and scale. +func (b *Block) assertMergeable(ib *Block) { + if b.bh.TSID.MetricID != ib.bh.TSID.MetricID { + logger.Panicf("BUG: unequal TSID: %q vs %q", &b.bh.TSID, &ib.bh.TSID) + } + if b.bh.Scale != ib.bh.Scale { + logger.Panicf("BUG: unequal Scale: %d vs %d", b.bh.Scale, ib.bh.Scale) + } +} + +// tooBig returns true if the block is too big to be extended. +func (b *Block) tooBig() bool { + if b.bh.RowsCount >= maxRowsPerBlock || len(b.values[b.nextIdx:]) >= maxRowsPerBlock { + return true + } + if len(b.valuesData) >= maxBlockSize { + return true + } + return false +} + +// MarshalData marshals the block into binary representation. +func (b *Block) MarshalData(timestampsBlockOffset, valuesBlockOffset uint64) ([]byte, []byte, []byte) { + if len(b.values) == 0 { + // The data has been already marshaled. + + // b.valuesData and b.timestampsData may be empty for certain + // b.bh.*MarshalType values, so don't check them. + + if b.nextIdx != 0 { + logger.Panicf("BUG: nextIdx must be zero; got %d", b.nextIdx) + } + if int(b.bh.TimestampsBlockSize) != len(b.timestampsData) { + logger.Panicf("BUG: invalid TimestampsBlockSize; got %d; expecting %d", b.bh.TimestampsBlockSize, len(b.timestampsData)) + } + if int(b.bh.ValuesBlockSize) != len(b.valuesData) { + logger.Panicf("BUG: invalid ValuesBlockSize; got %d; expecting %d", b.bh.ValuesBlockSize, len(b.valuesData)) + } + if b.bh.RowsCount <= 0 { + logger.Panicf("BUG: RowsCount must be greater than 0; got %d", b.bh.RowsCount) + } + + // headerData must be always recreated, since it contains timestampsBlockOffset and valuesBlockOffset. + b.bh.TimestampsBlockOffset = timestampsBlockOffset + b.bh.ValuesBlockOffset = valuesBlockOffset + b.headerData = b.bh.Marshal(b.headerData[:0]) + + return b.headerData, b.timestampsData, b.valuesData + } + + if b.nextIdx > len(b.values) { + logger.Panicf("BUG: nextIdx cannot exceed values size; got %d vs %d", b.nextIdx, len(b.values)) + } + + timestamps := b.timestamps[b.nextIdx:] + values := b.values[b.nextIdx:] + if len(values) == 0 { + logger.Panicf("BUG: values cannot be empty; nextIdx=%d, timestampsBlockOffset=%d, valuesBlockOffset=%d", b.nextIdx, timestampsBlockOffset, valuesBlockOffset) + } + if len(values) != len(timestamps) { + logger.Panicf("BUG: the number of values must match the number of timestamps; got %d vs %d", len(values), len(timestamps)) + } + + b.valuesData, b.bh.ValuesMarshalType, b.bh.FirstValue = encoding.MarshalValues(b.valuesData[:0], values, b.bh.PrecisionBits) + b.bh.ValuesBlockOffset = valuesBlockOffset + b.bh.ValuesBlockSize = uint32(len(b.valuesData)) + b.values = b.values[:0] + + if len(timestamps) > 1 && (b.bh.ValuesMarshalType == encoding.MarshalTypeConst || b.bh.ValuesMarshalType == encoding.MarshalTypeDeltaConst) { + // Special case - values are constant or are changed with constant rate. + // In this case we may 'cheat' by assuming timestamps are changed + // at ideal constant rate. This improves timestamps' compression rate. + minTimestamp := timestamps[0] + maxTimestamp := timestamps[len(timestamps)-1] + delta := (maxTimestamp - minTimestamp) / int64(len(timestamps)-1) + ts := minTimestamp + for i := 1; i < len(timestamps); i++ { + ts += delta + timestamps[i] = ts + } + } + b.timestampsData, b.bh.TimestampsMarshalType, b.bh.MinTimestamp = encoding.MarshalTimestamps(b.timestampsData[:0], timestamps, b.bh.PrecisionBits) + b.bh.TimestampsBlockOffset = timestampsBlockOffset + b.bh.TimestampsBlockSize = uint32(len(b.timestampsData)) + b.bh.MaxTimestamp = timestamps[len(timestamps)-1] + b.timestamps = b.timestamps[:0] + + b.bh.RowsCount = uint32(len(values)) + b.headerData = b.bh.Marshal(b.headerData[:0]) + + b.nextIdx = 0 + + return b.headerData, b.timestampsData, b.valuesData +} + +// UnmarshalData unmarshals block data. +func (b *Block) UnmarshalData() error { + // blockHeader (b.bh) must be already unmarshaled. + + if len(b.values) > 0 { + // The data has been already unmarshaled. + if len(b.valuesData) > 0 { + logger.Panicf("BUG: valuesData must be empty; contains %d bytes", len(b.valuesData)) + } + if len(b.timestampsData) > 0 { + logger.Panicf("BUG: timestampsData must be empty; contains %d bytes", len(b.timestampsData)) + } + return nil + } + + if b.bh.RowsCount <= 0 { + logger.Panicf("BUG: RowsCount must be greater than 0; got %d", b.bh.RowsCount) + } + + var err error + + b.timestamps, err = encoding.UnmarshalTimestamps(b.timestamps[:0], b.timestampsData, b.bh.TimestampsMarshalType, b.bh.MinTimestamp, int(b.bh.RowsCount)) + if err != nil { + return err + } + encoding.EnsureNonDecreasingSequence(b.timestamps, b.bh.MinTimestamp, b.bh.MaxTimestamp) + b.timestampsData = b.timestampsData[:0] + + b.values, err = encoding.UnmarshalValues(b.values[:0], b.valuesData, b.bh.ValuesMarshalType, b.bh.FirstValue, int(b.bh.RowsCount)) + if err != nil { + return err + } + b.valuesData = b.valuesData[:0] + + if len(b.timestamps) != len(b.values) { + logger.Panicf("BUG: timestamps and values count mismatch; got %d vs %d", len(b.timestamps), len(b.values)) + } + + b.nextIdx = 0 + + return nil +} diff --git a/lib/storage/block_header.go b/lib/storage/block_header.go new file mode 100644 index 000000000..0a0046804 --- /dev/null +++ b/lib/storage/block_header.go @@ -0,0 +1,207 @@ +package storage + +import ( + "fmt" + "sort" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// blockHeader is a header for a time series block. +// +// Each block contains rows for a single time series. Rows are sorted +// by timestamp. +// +// A single time series may span multiple blocks. +type blockHeader struct { + // TSID is the TSID for the block. + // Multiple blocks may have the same TSID. + TSID TSID + + // MinTimestamp is the minimum timestamp in the block. + // + // This is the first timestamp, since rows are sorted by timestamps. + MinTimestamp int64 + + // MaxTimestamp is the maximum timestamp in the block. + // + // This is the last timestamp, since rows are sorted by timestamps. + MaxTimestamp int64 + + // FirstValue is the first value in the block. + // + // It is stored here for better compression level, since usually + // the first value significantly differs from subsequent values + // which may be delta-encoded. + FirstValue int64 + + // TimestampsBlockOffset is the offset in bytes for a block + // with timestamps in timestamps file. + TimestampsBlockOffset uint64 + + // ValuesBlockOffset is the offset in bytes for a block with values + // in values file. + ValuesBlockOffset uint64 + + // TimestampsBlocksSize is the size in bytes for a block with timestamps. + TimestampsBlockSize uint32 + + // ValuesBlockSize is the size in bytes for a block with values. + ValuesBlockSize uint32 + + // RowsCount is the number of rows in the block. + // + // The block must contain at least one row. + RowsCount uint32 + + // Scale is the 10^Scale multiplier for values in the block. + Scale int16 + + // TimestampsMarshalType is the marshal type used for marshaling + // a block with timestamps. + TimestampsMarshalType encoding.MarshalType + + // ValuesMarshalType is the marshal type used for marshaling + // a block with values. + ValuesMarshalType encoding.MarshalType + + // PrecisionBits is the number of significant bits when using + // MarshalTypeNearestDelta2 encoding. + // + // Possible values are in the range [1...64], where + // 1 means max 50% error, + // 2 means max 25% error, + // n means max 100/(2^n)% error, + // 64 means exact values. + // + // Lower PrecisionBits give better block compression and speed. + PrecisionBits uint8 +} + +// Less returns true if b is less than src. +func (bh *blockHeader) Less(src *blockHeader) bool { + if bh.TSID.MetricID == src.TSID.MetricID { + // Fast path for identical TSIDs. + return bh.MinTimestamp < src.MinTimestamp + } + + // Slow path for distinct TSIDs. + return bh.TSID.Less(&src.TSID) +} + +// marshaledBlockHeaderSize is the size of marshaled block header. +var marshaledBlockHeaderSize = func() int { + var bh blockHeader + data := bh.Marshal(nil) + return len(data) +}() + +// Marshal appends marshaled bh to dst and returns the result. +func (bh *blockHeader) Marshal(dst []byte) []byte { + dst = bh.TSID.Marshal(dst) + dst = encoding.MarshalInt64(dst, bh.MinTimestamp) + dst = encoding.MarshalInt64(dst, bh.MaxTimestamp) + dst = encoding.MarshalInt64(dst, bh.FirstValue) + dst = encoding.MarshalUint64(dst, bh.TimestampsBlockOffset) + dst = encoding.MarshalUint64(dst, bh.ValuesBlockOffset) + dst = encoding.MarshalUint32(dst, bh.TimestampsBlockSize) + dst = encoding.MarshalUint32(dst, bh.ValuesBlockSize) + dst = encoding.MarshalUint32(dst, bh.RowsCount) + dst = encoding.MarshalInt16(dst, bh.Scale) + dst = append(dst, byte(bh.TimestampsMarshalType), byte(bh.ValuesMarshalType), bh.PrecisionBits) + return dst +} + +// Unmarshal unmarshals bh from src and returns the rest of src. +func (bh *blockHeader) Unmarshal(src []byte) ([]byte, error) { + if len(src) < marshaledBlockHeaderSize { + return src, fmt.Errorf("too short block header; got %d bytes; want %d bytes", len(src), marshaledBlockHeaderSize) + } + + tail, err := bh.TSID.Unmarshal(src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal TSID: %s", err) + } + src = tail + + bh.MinTimestamp = encoding.UnmarshalInt64(src) + src = src[8:] + bh.MaxTimestamp = encoding.UnmarshalInt64(src) + src = src[8:] + bh.FirstValue = encoding.UnmarshalInt64(src) + src = src[8:] + bh.TimestampsBlockOffset = encoding.UnmarshalUint64(src) + src = src[8:] + bh.ValuesBlockOffset = encoding.UnmarshalUint64(src) + src = src[8:] + bh.TimestampsBlockSize = encoding.UnmarshalUint32(src) + src = src[4:] + bh.ValuesBlockSize = encoding.UnmarshalUint32(src) + src = src[4:] + bh.RowsCount = encoding.UnmarshalUint32(src) + src = src[4:] + bh.Scale = encoding.UnmarshalInt16(src) + src = src[2:] + bh.TimestampsMarshalType = encoding.MarshalType(src[0]) + src = src[1:] + bh.ValuesMarshalType = encoding.MarshalType(src[0]) + src = src[1:] + bh.PrecisionBits = uint8(src[0]) + src = src[1:] + + if bh.RowsCount == 0 { + return src, fmt.Errorf("RowsCount in block header cannot be zero") + } + if err = encoding.CheckMarshalType(bh.TimestampsMarshalType); err != nil { + return src, fmt.Errorf("unsupported TimestampsMarshalType: %s", err) + } + if err = encoding.CheckMarshalType(bh.ValuesMarshalType); err != nil { + return src, fmt.Errorf("unsupported ValuesMarshalType: %s", err) + } + if err = encoding.CheckPrecisionBits(bh.PrecisionBits); err != nil { + return src, err + } + if bh.TimestampsBlockSize > 2*8*maxBlockSize { + return src, fmt.Errorf("too big TimestampsBlockSize; got %d; cannot exceed %d", bh.TimestampsBlockSize, 2*8*maxBlockSize) + } + if bh.ValuesBlockSize > 2*8*maxBlockSize { + return src, fmt.Errorf("too big ValuesBlockSize; got %d; cannot exceed %d", bh.ValuesBlockSize, 2*8*maxBlockSize) + } + + return src, nil +} + +// unmarshalBlockHeaders unmarshals all the block headers from src, +// appends them to dst and returns the appended result. +// +// Block headers must be sorted by bh.TSID. +func unmarshalBlockHeaders(dst []blockHeader, src []byte, blockHeadersCount int) ([]blockHeader, error) { + if blockHeadersCount <= 0 { + logger.Panicf("BUG: blockHeadersCount must be greater than zero; got %d", blockHeadersCount) + } + dstLen := len(dst) + var bh blockHeader + for len(src) > 0 { + tmp, err := bh.Unmarshal(src) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal block header: %s", err) + } + src = tmp + dst = append(dst, bh) + } + + newBHS := dst[dstLen:] + + // Verify the number of read block headers. + if len(newBHS) != blockHeadersCount { + return nil, fmt.Errorf("invalid number of block headers found: %d; want %d block headers", len(newBHS), blockHeadersCount) + } + + // Verify that block headers are sorted by tsid. + if !sort.SliceIsSorted(newBHS, func(i, j int) bool { return newBHS[i].TSID.Less(&newBHS[j].TSID) }) { + return nil, fmt.Errorf("block headers must be sorted by tsid; unmarshaled unsorted block headers: %+v", newBHS) + } + + return dst, nil +} diff --git a/lib/storage/block_header_test.go b/lib/storage/block_header_test.go new file mode 100644 index 000000000..ea5cdd669 --- /dev/null +++ b/lib/storage/block_header_test.go @@ -0,0 +1,81 @@ +package storage + +import ( + "reflect" + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" +) + +func TestMarshaledBlockHeaderSize(t *testing.T) { + // This test makes sure marshaled format isn't changed. + // If this test breaks then the storage format has been changed, + // so it may become incompatible with the previously written data. + expectedSize := 81 + if marshaledBlockHeaderSize != expectedSize { + t.Fatalf("unexpected marshaledBlockHeaderSize; got %d; want %d", marshaledBlockHeaderSize, expectedSize) + } +} + +func TestBlockHeaderMarshalUnmarshal(t *testing.T) { + var bh blockHeader + for i := 0; i < 1000; i++ { + bh.TSID.MetricID = uint64(i + 1) + bh.MinTimestamp = int64(-i*1e3 + 2) + bh.MaxTimestamp = int64(i*2e3 + 3) + bh.TimestampsBlockOffset = uint64(i*12345 + 4) + bh.ValuesBlockOffset = uint64(i*3243 + 5) + bh.TimestampsBlockSize = uint32(i*892 + 6) + bh.ValuesBlockSize = uint32(i*894 + 7) + bh.RowsCount = uint32(i*3 + 8) + bh.Scale = int16(i - 434 + 9) + bh.TimestampsMarshalType = encoding.MarshalType((i + 10) % 7) + bh.ValuesMarshalType = encoding.MarshalType((i + 11) % 7) + bh.PrecisionBits = 1 + uint8((i+12)%64) + + testBlockHeaderMarshalUnmarshal(t, &bh) + } +} + +func testBlockHeaderMarshalUnmarshal(t *testing.T, bh *blockHeader) { + t.Helper() + + dst := bh.Marshal(nil) + if len(dst) != marshaledBlockHeaderSize { + t.Fatalf("unexpected dst size; got %d; want %d", len(dst), marshaledBlockHeaderSize) + } + var bh1 blockHeader + tail, err := bh1.Unmarshal(dst) + if err != nil { + t.Fatalf("cannot umarshal bh=%+v from dst=%x: %s", bh, dst, err) + } + if len(tail) > 0 { + t.Fatalf("unexpected tail left after unmarshaling of bh=%+v: %x", bh, tail) + } + if !reflect.DeepEqual(bh, &bh1) { + t.Fatalf("unexpected bh unmarshaled; got\n%+v; want\n%+v", &bh1, bh) + } + + prefix := []byte("foo") + dstNew := bh.Marshal(prefix) + if string(dstNew[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix after marshaling bh=%+v; got\n%x; want\n%x", bh, dstNew[:len(prefix)], prefix) + } + if string(dstNew[len(prefix):]) != string(dst) { + t.Fatalf("unexpected prefixed dst for bh=%+v; got\n%x; want\n%x", bh, dstNew[len(prefix):], dst) + } + + suffix := []byte("bar") + dst = append(dst, suffix...) + var bh2 blockHeader + tail, err = bh2.Unmarshal(dst) + if err != nil { + t.Fatalf("cannot unmarshal bh=%+v from suffixed dst=%x: %s", bh, dst, err) + } + if string(tail) != string(suffix) { + t.Fatalf("unexpected tail after unmarshaling bh=%+v; got\n%x; want\n%x", bh, tail, suffix) + } + if !reflect.DeepEqual(bh, &bh2) { + t.Fatalf("unexpected bh unmarshaled after adding siffux; got\n%+v; want\n%+v", &bh2, bh) + } +} diff --git a/lib/storage/block_stream_merger.go b/lib/storage/block_stream_merger.go new file mode 100644 index 000000000..89819ad7e --- /dev/null +++ b/lib/storage/block_stream_merger.go @@ -0,0 +1,142 @@ +package storage + +import ( + "container/heap" + "fmt" + "io" +) + +// blockStreamMerger is used for merging block streams. +type blockStreamMerger struct { + // The current block to work with. + Block *Block + + bsrHeap blockStreamReaderHeap + + // Whether the call to NextBlock must be no-op. + nextBlockNoop bool + + // The last error + err error +} + +func (bsm *blockStreamMerger) reset() { + bsm.Block = nil + for i := range bsm.bsrHeap { + bsm.bsrHeap[i] = nil + } + bsm.bsrHeap = bsm.bsrHeap[:0] + bsm.nextBlockNoop = false + bsm.err = nil +} + +// Init initializes bsm with the given bsrs. +func (bsm *blockStreamMerger) Init(bsrs []*blockStreamReader) { + bsm.reset() + for _, bsr := range bsrs { + if bsr.NextBlock() { + bsm.bsrHeap = append(bsm.bsrHeap, bsr) + continue + } + if err := bsr.Error(); err != nil { + bsm.err = fmt.Errorf("cannot obtain the next block to merge: %s", err) + return + } + } + + if len(bsm.bsrHeap) == 0 { + bsm.err = io.EOF + return + } + + heap.Init(&bsm.bsrHeap) + bsm.Block = &bsm.bsrHeap[0].Block + bsm.nextBlockNoop = true +} + +// NextBlock stores the next block in bsm.Block. +// +// The blocks are sorted by (TDIS, MinTimestamp). Two subsequent blocks +// for the same TSID may contain overlapped time ranges. +func (bsm *blockStreamMerger) NextBlock() bool { + if bsm.err != nil { + return false + } + if bsm.nextBlockNoop { + bsm.nextBlockNoop = false + return true + } + + bsm.err = bsm.nextBlock() + switch bsm.err { + case nil: + return true + case io.EOF: + return false + default: + bsm.err = fmt.Errorf("cannot obtain the next block to merge: %s", bsm.err) + return false + } +} + +func (bsm *blockStreamMerger) nextBlock() error { + bsrMin := bsm.bsrHeap[0] + if bsrMin.NextBlock() { + heap.Fix(&bsm.bsrHeap, 0) + bsm.Block = &bsm.bsrHeap[0].Block + return nil + } + + if err := bsrMin.Error(); err != nil { + return err + } + + heap.Pop(&bsm.bsrHeap) + + if len(bsm.bsrHeap) == 0 { + return io.EOF + } + + bsm.Block = &bsm.bsrHeap[0].Block + return nil +} + +func (bsm *blockStreamMerger) Error() error { + if bsm.err == io.EOF { + return nil + } + return bsm.err +} + +type blockStreamReaderHeap []*blockStreamReader + +func (bsrh *blockStreamReaderHeap) Len() int { + return len(*bsrh) +} + +func (bsrh *blockStreamReaderHeap) Less(i, j int) bool { + x := *bsrh + a, b := &x[i].Block.bh, &x[j].Block.bh + if a.TSID.MetricID == b.TSID.MetricID { + // Fast path for identical TSID values. + return a.MinTimestamp < b.MinTimestamp + } + // Slow path for distinct TSID values. + return a.TSID.Less(&b.TSID) +} + +func (bsrh *blockStreamReaderHeap) Swap(i, j int) { + x := *bsrh + x[i], x[j] = x[j], x[i] +} + +func (bsrh *blockStreamReaderHeap) Push(x interface{}) { + *bsrh = append(*bsrh, x.(*blockStreamReader)) +} + +func (bsrh *blockStreamReaderHeap) Pop() interface{} { + a := *bsrh + v := a[len(a)-1] + *bsrh = a[:len(a)-1] + return v +} diff --git a/lib/storage/block_stream_reader.go b/lib/storage/block_stream_reader.go new file mode 100644 index 000000000..0f433125e --- /dev/null +++ b/lib/storage/block_stream_reader.go @@ -0,0 +1,348 @@ +package storage + +import ( + "fmt" + "io" + "path/filepath" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// blockStreamReader represents block stream reader. +type blockStreamReader struct { + // Currently active block. + Block Block + + // Filesystem path to the stream reader. + // + // Is empty for inmemory stream readers. + path string + + ph partHeader + + timestampsReader filestream.ReadCloser + valuesReader filestream.ReadCloser + indexReader filestream.ReadCloser + + mrs []metaindexRow + + // Points the current mr from mrs. + mr *metaindexRow + + // The total number of rows read so far. + rowsCount uint64 + + // The total number of blocks read so far. + blocksCount uint64 + + // The number of block headers in the current index block. + indexBlockHeadersCount uint32 + + timestampsBlockOffset uint64 + valuesBlockOffset uint64 + indexBlockOffset uint64 + + indexData []byte + compressedIndexData []byte + + // Cursor to indexData. + indexCursor []byte + + err error +} + +func (bsr *blockStreamReader) reset() { + bsr.Block.Reset() + + bsr.path = "" + + bsr.ph.Reset() + + bsr.timestampsReader = nil + bsr.valuesReader = nil + bsr.indexReader = nil + + bsr.mrs = bsr.mrs[:0] + bsr.mr = nil + + bsr.rowsCount = 0 + bsr.blocksCount = 0 + bsr.indexBlockHeadersCount = 0 + + bsr.timestampsBlockOffset = 0 + bsr.valuesBlockOffset = 0 + bsr.indexBlockOffset = 0 + + bsr.indexData = bsr.indexData[:0] + bsr.compressedIndexData = bsr.compressedIndexData[:0] + + bsr.indexCursor = nil + + bsr.err = nil +} + +// String returns human-readable representation of bsr. +func (bsr *blockStreamReader) String() string { + if len(bsr.path) > 0 { + return bsr.path + } + return bsr.ph.String() +} + +// InitFromInmemoryPart initializes bsr from the given mp. +func (bsr *blockStreamReader) InitFromInmemoryPart(mp *inmemoryPart) { + bsr.reset() + + bsr.ph = mp.ph + bsr.timestampsReader = mp.timestampsData.NewReader() + bsr.valuesReader = mp.valuesData.NewReader() + bsr.indexReader = mp.indexData.NewReader() + + var err error + bsr.mrs, err = unmarshalMetaindexRows(bsr.mrs[:0], mp.metaindexData.NewReader()) + if err != nil { + logger.Panicf("BUG: cannot unmarshal metaindex rows from inmemoryPart: %s", err) + } +} + +// InitFromFilePart initializes bsr from a file-based part on the given path. +// +// Files in the part are always read without OS cache pollution, +// since they are usually deleted after the merge. +func (bsr *blockStreamReader) InitFromFilePart(path string) error { + bsr.reset() + + path = filepath.Clean(path) + + if err := bsr.ph.ParseFromPath(path); err != nil { + return fmt.Errorf("cannot parse path to part: %s", err) + } + + timestampsPath := path + "/timestamps.bin" + timestampsFile, err := filestream.Open(timestampsPath, true) + if err != nil { + return fmt.Errorf("cannot open timestamps file in stream mode: %s", err) + } + + valuesPath := path + "/values.bin" + valuesFile, err := filestream.Open(valuesPath, true) + if err != nil { + timestampsFile.MustClose() + return fmt.Errorf("cannot open values file in stream mode: %s", err) + } + + indexPath := path + "/index.bin" + indexFile, err := filestream.Open(indexPath, true) + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + return fmt.Errorf("cannot open index file in stream mode: %s", err) + } + + metaindexPath := path + "/metaindex.bin" + metaindexFile, err := filestream.Open(metaindexPath, true) + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + indexFile.MustClose() + return fmt.Errorf("cannot open metaindex file in stream mode: %s", err) + } + mrs, err := unmarshalMetaindexRows(bsr.mrs[:0], metaindexFile) + metaindexFile.MustClose() + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + indexFile.MustClose() + return fmt.Errorf("cannot unmarshal metaindex rows from inmemoryPart: %s", err) + } + + bsr.path = path + bsr.timestampsReader = timestampsFile + bsr.valuesReader = valuesFile + bsr.indexReader = indexFile + bsr.mrs = mrs + + return nil +} + +// MustClose closes the bsr. +// +// It closes *Reader files passed to Init. +func (bsr *blockStreamReader) MustClose() { + bsr.timestampsReader.MustClose() + bsr.valuesReader.MustClose() + bsr.indexReader.MustClose() + + bsr.reset() +} + +// Error returns the last error. +func (bsr *blockStreamReader) Error() error { + if bsr.err == nil || bsr.err == io.EOF { + return nil + } + return fmt.Errorf("error when reading part %q: %s", bsr, bsr.err) +} + +// NextBlock advances bsr to the next block. +func (bsr *blockStreamReader) NextBlock() bool { + if bsr.err != nil { + return false + } + + bsr.Block.Reset() + + err := bsr.readBlock() + if err == nil { + if bsr.Block.bh.RowsCount > 0 { + return true + } + bsr.err = fmt.Errorf("invalid block read with zero rows; block=%+v", &bsr.Block) + return false + } + if err == io.EOF { + bsr.err = io.EOF + return false + } + + bsr.err = fmt.Errorf("cannot read next block: %s", err) + return false +} + +func (bsr *blockStreamReader) readBlock() error { + if len(bsr.indexCursor) == 0 { + if bsr.mr != nil && bsr.indexBlockHeadersCount != bsr.mr.BlockHeadersCount { + return fmt.Errorf("invalid number of block headers in the previous index block at offset %d; got %d; want %d", + bsr.prevIndexBlockOffset(), bsr.indexBlockHeadersCount, bsr.mr.BlockHeadersCount) + } + bsr.indexBlockHeadersCount = 0 + if err := bsr.readIndexBlock(); err != nil { + if err == io.EOF { + return io.EOF + } + return fmt.Errorf("cannot read index block from index data: %s", err) + } + } + + // Read block header. + if len(bsr.indexCursor) < marshaledBlockHeaderSize { + return fmt.Errorf("too short index data for reading block header at offset %d; got %d bytes; want %d bytes", + bsr.prevIndexBlockOffset(), len(bsr.indexCursor), marshaledBlockHeaderSize) + } + bsr.Block.headerData = append(bsr.Block.headerData[:0], bsr.indexCursor[:marshaledBlockHeaderSize]...) + bsr.indexCursor = bsr.indexCursor[marshaledBlockHeaderSize:] + tail, err := bsr.Block.bh.Unmarshal(bsr.Block.headerData) + if err != nil { + return fmt.Errorf("cannot parse block header read from index data at offset %d: %s", bsr.prevIndexBlockOffset(), err) + } + if len(tail) > 0 { + return fmt.Errorf("non-empty tail left after parsing block header at offset %d: %x", bsr.prevIndexBlockOffset(), tail) + } + + bsr.blocksCount++ + if bsr.blocksCount > bsr.ph.BlocksCount { + return fmt.Errorf("too many blocks found in the block stream; got %d; cannot be bigger than %d", bsr.blocksCount, bsr.ph.BlocksCount) + } + + // Validate block header. + bsr.rowsCount += uint64(bsr.Block.bh.RowsCount) + if bsr.rowsCount > bsr.ph.RowsCount { + return fmt.Errorf("too many rows found in the block stream; got %d; cannot be bigger than %d", bsr.rowsCount, bsr.ph.RowsCount) + } + if bsr.Block.bh.MinTimestamp < bsr.ph.MinTimestamp { + return fmt.Errorf("invalid MinTimestamp at block header at offset %d; got %d; cannot be smaller than %d", + bsr.prevIndexBlockOffset(), bsr.Block.bh.MinTimestamp, bsr.ph.MinTimestamp) + } + if bsr.Block.bh.MaxTimestamp > bsr.ph.MaxTimestamp { + return fmt.Errorf("invalid MaxTimestamp at block header at offset %d; got %d; cannot be bigger than %d", + bsr.prevIndexBlockOffset(), bsr.Block.bh.MaxTimestamp, bsr.ph.MaxTimestamp) + } + if bsr.Block.bh.TimestampsBlockOffset != bsr.timestampsBlockOffset { + return fmt.Errorf("invalid TimestampsBlockOffset at block header at offset %d; got %d; want %d", + bsr.prevIndexBlockOffset(), bsr.Block.bh.TimestampsBlockOffset, bsr.timestampsBlockOffset) + } + if bsr.Block.bh.ValuesBlockOffset != bsr.valuesBlockOffset { + return fmt.Errorf("invalid ValuesBlockOffset at block header at offset %d; got %d; want %d", + bsr.prevIndexBlockOffset(), bsr.Block.bh.ValuesBlockOffset, bsr.valuesBlockOffset) + } + + // Read timestamps data. + bsr.Block.timestampsData = bytesutil.Resize(bsr.Block.timestampsData, int(bsr.Block.bh.TimestampsBlockSize)) + if err := fs.ReadFullData(bsr.timestampsReader, bsr.Block.timestampsData); err != nil { + return fmt.Errorf("cannot read timestamps block at offset %d: %s", bsr.timestampsBlockOffset, err) + } + + // Read values data. + bsr.Block.valuesData = bytesutil.Resize(bsr.Block.valuesData, int(bsr.Block.bh.ValuesBlockSize)) + if err := fs.ReadFullData(bsr.valuesReader, bsr.Block.valuesData); err != nil { + return fmt.Errorf("cannot read values block at offset %d: %s", bsr.valuesBlockOffset, err) + } + + // Update offsets. + bsr.timestampsBlockOffset += uint64(bsr.Block.bh.TimestampsBlockSize) + bsr.valuesBlockOffset += uint64(bsr.Block.bh.ValuesBlockSize) + bsr.indexBlockHeadersCount++ + + return nil +} + +func (bsr *blockStreamReader) readIndexBlock() error { + // Go to the next metaindex row. + if len(bsr.mrs) == 0 { + return io.EOF + } + bsr.mr = &bsr.mrs[0] + bsr.mrs = bsr.mrs[1:] + + // Validate metaindex row. + if bsr.indexBlockOffset != bsr.mr.IndexBlockOffset { + return fmt.Errorf("invalid IndexBlockOffset in metaindex row; got %d; want %d", bsr.mr.IndexBlockOffset, bsr.indexBlockOffset) + } + if bsr.mr.MinTimestamp < bsr.ph.MinTimestamp { + return fmt.Errorf("invalid MinTimesamp in metaindex row; got %d; cannot be smaller than %d", bsr.mr.MinTimestamp, bsr.ph.MinTimestamp) + } + if bsr.mr.MaxTimestamp > bsr.ph.MaxTimestamp { + return fmt.Errorf("invalid MaxTimestamp in metaindex row; got %d; cannot be bigger than %d", bsr.mr.MaxTimestamp, bsr.ph.MaxTimestamp) + } + + // Read index block. + bsr.compressedIndexData = bytesutil.Resize(bsr.compressedIndexData, int(bsr.mr.IndexBlockSize)) + if err := fs.ReadFullData(bsr.indexReader, bsr.compressedIndexData); err != nil { + return fmt.Errorf("cannot read index block from index data at offset %d: %s", bsr.indexBlockOffset, err) + } + tmpData, err := encoding.DecompressZSTD(bsr.indexData[:0], bsr.compressedIndexData) + if err != nil { + return fmt.Errorf("cannot decompress index block read at offset %d: %s", bsr.indexBlockOffset, err) + } + bsr.indexData = tmpData + bsr.indexCursor = bsr.indexData + + // Update offsets. + bsr.indexBlockOffset += uint64(bsr.mr.IndexBlockSize) + + return nil +} + +func (bsr *blockStreamReader) prevIndexBlockOffset() uint64 { + return bsr.indexBlockOffset - uint64(bsr.mr.IndexBlockSize) +} + +func getBlockStreamReader() *blockStreamReader { + v := bsrPool.Get() + if v == nil { + return &blockStreamReader{} + } + return v.(*blockStreamReader) +} + +func putBlockStreamReader(bsr *blockStreamReader) { + bsr.MustClose() + bsrPool.Put(bsr) +} + +var bsrPool sync.Pool diff --git a/lib/storage/block_stream_reader_test.go b/lib/storage/block_stream_reader_test.go new file mode 100644 index 000000000..af50a4dff --- /dev/null +++ b/lib/storage/block_stream_reader_test.go @@ -0,0 +1,155 @@ +package storage + +import ( + "fmt" + "math/rand" + "testing" + "time" +) + +func TestBlockStreamReaderSingleRow(t *testing.T) { + rows := []rawRow{{ + Timestamp: 12334545, + Value: 1.2345, + PrecisionBits: defaultPrecisionBits, + }} + testBlocksStreamReader(t, rows, 1) +} + +func TestBlockStreamReaderSingleBlockManyRows(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + for i := 0; i < maxRowsPerBlock; i++ { + r.Value = rand.Float64()*1e9 - 5e8 + r.Timestamp = int64(i * 1e9) + rows = append(rows, r) + } + testBlocksStreamReader(t, rows, 1) +} + +func TestBlockStreamReaderSingleTSIDManyBlocks(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = 1 + for i := 0; i < 5*maxRowsPerBlock; i++ { + r.Value = rand.NormFloat64() * 1e4 + r.Timestamp = int64(rand.NormFloat64() * 1e9) + rows = append(rows, r) + } + testBlocksStreamReader(t, rows, 5) +} + +func TestBlockStreamReaderManyTSIDSingleRow(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + for i := 0; i < 1000; i++ { + r.TSID.MetricID = uint64(i) + r.Value = rand.Float64()*1e9 - 5e8 + r.Timestamp = int64(i * 1e9) + rows = append(rows, r) + } + testBlocksStreamReader(t, rows, 1000) +} + +func TestBlockStreamReaderManyTSIDManyRows(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + const blocks = 123 + for i := 0; i < 3210; i++ { + r.TSID.MetricID = uint64((1e12 - i) % blocks) + r.Value = rand.Float64() + r.Timestamp = int64(rand.Float64() * 1e9) + rows = append(rows, r) + } + testBlocksStreamReader(t, rows, blocks) +} + +func TestBlockStreamReaderReadConcurrent(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + const blocks = 123 + for i := 0; i < 3210; i++ { + r.TSID.MetricID = uint64((1e12 - i) % blocks) + r.Value = rand.Float64() + r.Timestamp = int64(rand.Float64() * 1e9) + rows = append(rows, r) + } + var mp inmemoryPart + mp.InitFromRows(rows) + + ch := make(chan error, 5) + for i := 0; i < 5; i++ { + go func() { + ch <- testBlockStreamReaderReadRows(&mp, rows) + }() + } + for i := 0; i < 5; i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(time.Second * 5): + t.Fatalf("timeout") + } + } +} + +func testBlockStreamReaderReadRows(mp *inmemoryPart, rows []rawRow) error { + var bsr blockStreamReader + bsr.InitFromInmemoryPart(mp) + rowsCount := 0 + for bsr.NextBlock() { + if err := bsr.Block.UnmarshalData(); err != nil { + return fmt.Errorf("cannot unmarshal block data: %s", err) + } + for bsr.Block.nextRow() { + rowsCount++ + } + } + if err := bsr.Error(); err != nil { + return fmt.Errorf("unexpected error in bsr.NextBlock: %s", err) + } + if rowsCount != len(rows) { + return fmt.Errorf("unexpected number of rows read; got %d; want %d", rowsCount, len(rows)) + } + return nil +} + +func testBlocksStreamReader(t *testing.T, rows []rawRow, expectedBlocksCount int) { + t.Helper() + + bsr := newTestBlockStreamReader(t, rows) + blocksCount := 0 + rowsCount := 0 + for bsr.NextBlock() { + if err := bsr.Block.UnmarshalData(); err != nil { + t.Fatalf("cannot unmarshal block data: %s", err) + } + for bsr.Block.nextRow() { + rowsCount++ + } + blocksCount++ + } + if err := bsr.Error(); err != nil { + t.Fatalf("unexpected error in bsr.NextBlock: %s", err) + } + if blocksCount != expectedBlocksCount { + t.Fatalf("unexpected number of blocks read; got %d; want %d", blocksCount, expectedBlocksCount) + } + if rowsCount != len(rows) { + t.Fatalf("unexpected number of rows read; got %d; want %d", rowsCount, len(rows)) + } +} + +func newTestBlockStreamReader(t *testing.T, rows []rawRow) *blockStreamReader { + var mp inmemoryPart + mp.InitFromRows(rows) + var bsr blockStreamReader + bsr.InitFromInmemoryPart(&mp) + return &bsr +} diff --git a/lib/storage/block_stream_reader_timing_test.go b/lib/storage/block_stream_reader_timing_test.go new file mode 100644 index 000000000..abe885f0e --- /dev/null +++ b/lib/storage/block_stream_reader_timing_test.go @@ -0,0 +1,57 @@ +package storage + +import ( + "fmt" + "testing" +) + +func BenchmarkBlockStreamReaderBlocksWorstCase(b *testing.B) { + benchmarkBlockStreamReader(b, benchInmemoryPartWorstCase, false) +} + +func BenchmarkBlockStreamReaderBlocksBestCase(b *testing.B) { + benchmarkBlockStreamReader(b, benchInmemoryPartBestCase, false) +} + +func BenchmarkBlockStreamReaderRowsWorstCase(b *testing.B) { + benchmarkBlockStreamReader(b, benchInmemoryPartWorstCase, true) +} + +func BenchmarkBlockStreamReaderRowsBestCase(b *testing.B) { + benchmarkBlockStreamReader(b, benchInmemoryPartBestCase, true) +} + +func benchmarkBlockStreamReader(b *testing.B, mp *inmemoryPart, readRows bool) { + b.ReportAllocs() + b.SetBytes(int64(mp.ph.RowsCount)) + b.RunParallel(func(pb *testing.PB) { + var bsr blockStreamReader + blockNum := 0 + for pb.Next() { + bsr.InitFromInmemoryPart(mp) + for bsr.NextBlock() { + if !readRows { + continue + } + if err := bsr.Block.UnmarshalData(); err != nil { + panic(fmt.Errorf("unexpected error when unmarshaling rows on block %d: %s", blockNum, err)) + } + for bsr.Block.nextRow() { + } + } + if err := bsr.Error(); err != nil { + panic(fmt.Errorf("unexpected error when reading block %d: %s", blockNum, err)) + } + blockNum++ + } + }) +} + +var benchInmemoryPartWorstCase = newTestInmemoryPart(benchRawRowsWorstCase) +var benchInmemoryPartBestCase = newTestInmemoryPart(benchRawRowsBestCase) + +func newTestInmemoryPart(rows []rawRow) *inmemoryPart { + var mp inmemoryPart + mp.InitFromRows(rows) + return &mp +} diff --git a/lib/storage/block_stream_writer.go b/lib/storage/block_stream_writer.go new file mode 100644 index 000000000..6c00e1400 --- /dev/null +++ b/lib/storage/block_stream_writer.go @@ -0,0 +1,222 @@ +package storage + +import ( + "fmt" + "os" + "path/filepath" + "sync" + "sync/atomic" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// blockStreamWriter represents block stream writer. +type blockStreamWriter struct { + compressLevel int + path string + + timestampsWriter filestream.WriteCloser + valuesWriter filestream.WriteCloser + indexWriter filestream.WriteCloser + metaindexWriter filestream.WriteCloser + + mr metaindexRow + + timestampsBlockOffset uint64 + valuesBlockOffset uint64 + indexBlockOffset uint64 + + indexData []byte + compressedIndexData []byte + + metaindexData []byte + compressedMetaindexData []byte +} + +// Init initializes bsw with the given writers. +func (bsw *blockStreamWriter) reset() { + bsw.compressLevel = 0 + bsw.path = "" + + bsw.timestampsWriter = nil + bsw.valuesWriter = nil + bsw.indexWriter = nil + bsw.metaindexWriter = nil + + bsw.mr.Reset() + + bsw.timestampsBlockOffset = 0 + bsw.valuesBlockOffset = 0 + bsw.indexBlockOffset = 0 + + bsw.indexData = bsw.indexData[:0] + bsw.compressedIndexData = bsw.compressedIndexData[:0] + + bsw.metaindexData = bsw.metaindexData[:0] + bsw.compressedMetaindexData = bsw.compressedMetaindexData[:0] +} + +// InitFromInmemoryPart initialzes bsw from inmemory part. +func (bsw *blockStreamWriter) InitFromInmemoryPart(mp *inmemoryPart) { + bsw.reset() + bsw.compressLevel = 0 + + bsw.timestampsWriter = &mp.timestampsData + bsw.valuesWriter = &mp.valuesData + bsw.indexWriter = &mp.indexData + bsw.metaindexWriter = &mp.metaindexData +} + +// InitFromFilePart initializes bsw from a file-based part on the given path. +// +// The bsw doesn't pollute OS page cache if nocache is set. +func (bsw *blockStreamWriter) InitFromFilePart(path string, nocache bool, compressLevel int) error { + path = filepath.Clean(path) + + // Create the directory + if err := fs.MkdirAllFailIfExist(path); err != nil { + return fmt.Errorf("cannot create directory %q: %s", path, err) + } + + // Create part files in the directory. + timestampsPath := path + "/timestamps.bin" + timestampsFile, err := filestream.Create(timestampsPath, nocache) + if err != nil { + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create timestamps file: %s", err) + } + + valuesPath := path + "/values.bin" + valuesFile, err := filestream.Create(valuesPath, nocache) + if err != nil { + timestampsFile.MustClose() + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create values file: %s", err) + } + + indexPath := path + "/index.bin" + indexFile, err := filestream.Create(indexPath, nocache) + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create index file: %s", err) + } + + // Always cache metaindex file in OS page cache, since it is immediately + // read after the merge. + metaindexPath := path + "/metaindex.bin" + metaindexFile, err := filestream.Create(metaindexPath, false) + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + indexFile.MustClose() + _ = os.RemoveAll(path) + return fmt.Errorf("cannot create metaindex file: %s", err) + } + + bsw.reset() + bsw.compressLevel = compressLevel + bsw.path = path + + bsw.timestampsWriter = timestampsFile + bsw.valuesWriter = valuesFile + bsw.indexWriter = indexFile + bsw.metaindexWriter = metaindexFile + + return nil +} + +// MustClose closes the bsw. +// +// It closes *Writer files passed to Init*. +func (bsw *blockStreamWriter) MustClose() { + // Flush remaining data. + bsw.flushIndexData() + + // Write metaindex data. + bsw.compressedMetaindexData = encoding.CompressZSTDLevel(bsw.compressedMetaindexData[:0], bsw.metaindexData, bsw.compressLevel) + fs.MustWriteData(bsw.metaindexWriter, bsw.compressedMetaindexData) + + // Close writers. + bsw.timestampsWriter.MustClose() + bsw.valuesWriter.MustClose() + bsw.indexWriter.MustClose() + bsw.metaindexWriter.MustClose() + + bsw.reset() +} + +// WriteExternalBlock writes b to bsw and updates ph and rowsMerged. +func (bsw *blockStreamWriter) WriteExternalBlock(b *Block, ph *partHeader, rowsMerged *uint64) { + headerData, timestampsData, valuesData := b.MarshalData(bsw.timestampsBlockOffset, bsw.valuesBlockOffset) + + bsw.indexData = append(bsw.indexData, headerData...) + bsw.mr.RegisterBlockHeader(&b.bh) + if len(bsw.indexData) >= maxBlockSize { + bsw.flushIndexData() + } + + fs.MustWriteData(bsw.timestampsWriter, timestampsData) + bsw.timestampsBlockOffset += uint64(len(timestampsData)) + + fs.MustWriteData(bsw.valuesWriter, valuesData) + bsw.valuesBlockOffset += uint64(len(valuesData)) + + updatePartHeader(b, ph) + atomic.AddUint64(rowsMerged, uint64(b.bh.RowsCount)) +} + +func updatePartHeader(b *Block, ph *partHeader) { + ph.BlocksCount++ + ph.RowsCount += uint64(b.bh.RowsCount) + if b.bh.MinTimestamp < ph.MinTimestamp { + ph.MinTimestamp = b.bh.MinTimestamp + } + if b.bh.MaxTimestamp > ph.MaxTimestamp { + ph.MaxTimestamp = b.bh.MaxTimestamp + } +} + +func (bsw *blockStreamWriter) flushIndexData() { + if len(bsw.indexData) == 0 { + return + } + + // Write compressed index block to index data. + bsw.compressedIndexData = encoding.CompressZSTDLevel(bsw.compressedIndexData[:0], bsw.indexData, bsw.compressLevel) + indexBlockSize := len(bsw.compressedIndexData) + if uint64(indexBlockSize) >= 1<<32 { + logger.Panicf("BUG: indexBlock size must fit uint32; got %d", indexBlockSize) + } + fs.MustWriteData(bsw.indexWriter, bsw.compressedIndexData) + + // Write metaindex row to metaindex data. + bsw.mr.IndexBlockOffset = bsw.indexBlockOffset + bsw.mr.IndexBlockSize = uint32(indexBlockSize) + bsw.metaindexData = bsw.mr.Marshal(bsw.metaindexData) + + // Update offsets. + bsw.indexBlockOffset += uint64(indexBlockSize) + + bsw.indexData = bsw.indexData[:0] + bsw.mr.Reset() +} + +func getBlockStreamWriter() *blockStreamWriter { + v := bswPool.Get() + if v == nil { + return &blockStreamWriter{} + } + return v.(*blockStreamWriter) +} + +func putBlockStreamWriter(bsw *blockStreamWriter) { + bsw.reset() + bswPool.Put(bsw) +} + +var bswPool sync.Pool diff --git a/lib/storage/block_stream_writer_timing_test.go b/lib/storage/block_stream_writer_timing_test.go new file mode 100644 index 000000000..f786e4b82 --- /dev/null +++ b/lib/storage/block_stream_writer_timing_test.go @@ -0,0 +1,79 @@ +package storage + +import ( + "fmt" + "testing" +) + +func BenchmarkBlockStreamWriterBlocksWorstCase(b *testing.B) { + benchmarkBlockStreamWriter(b, benchBlocksWorstCase, len(benchRawRowsWorstCase), false) +} + +func BenchmarkBlockStreamWriterBlocksBestCase(b *testing.B) { + benchmarkBlockStreamWriter(b, benchBlocksBestCase, len(benchRawRowsBestCase), false) +} + +func BenchmarkBlockStreamWriterRowsWorstCase(b *testing.B) { + benchmarkBlockStreamWriter(b, benchBlocksWorstCase, len(benchRawRowsWorstCase), true) +} + +func BenchmarkBlockStreamWriterRowsBestCase(b *testing.B) { + benchmarkBlockStreamWriter(b, benchBlocksBestCase, len(benchRawRowsBestCase), true) +} + +func benchmarkBlockStreamWriter(b *testing.B, ebs []Block, rowsCount int, writeRows bool) { + var rowsMerged uint64 + + b.ReportAllocs() + b.SetBytes(int64(rowsCount)) + b.RunParallel(func(pb *testing.PB) { + var bsw blockStreamWriter + var mp inmemoryPart + var ph partHeader + var ebsCopy []Block + for i := range ebs { + var ebCopy Block + ebCopy.CopyFrom(&ebs[i]) + ebsCopy = append(ebsCopy, ebCopy) + } + loopCount := 0 + for pb.Next() { + if writeRows { + for i := range ebsCopy { + eb := &ebsCopy[i] + if err := eb.UnmarshalData(); err != nil { + panic(fmt.Errorf("cannot unmarshal block %d on loop %d: %s", i, loopCount, err)) + } + } + } + + bsw.InitFromInmemoryPart(&mp) + for i := range ebsCopy { + bsw.WriteExternalBlock(&ebsCopy[i], &ph, &rowsMerged) + } + bsw.MustClose() + mp.Reset() + loopCount++ + } + }) +} + +var benchBlocksWorstCase = newBenchBlocks(benchRawRowsWorstCase) +var benchBlocksBestCase = newBenchBlocks(benchRawRowsBestCase) + +func newBenchBlocks(rows []rawRow) []Block { + var ebs []Block + + mp := newTestInmemoryPart(rows) + var bsr blockStreamReader + bsr.InitFromInmemoryPart(mp) + for bsr.NextBlock() { + var eb Block + eb.CopyFrom(&bsr.Block) + ebs = append(ebs, eb) + } + if err := bsr.Error(); err != nil { + panic(fmt.Errorf("unexpected error when reading inmemoryPart: %s", err)) + } + return ebs +} diff --git a/lib/storage/index_db.go b/lib/storage/index_db.go new file mode 100644 index 000000000..c1150a1e1 --- /dev/null +++ b/lib/storage/index_db.go @@ -0,0 +1,1750 @@ +package storage + +import ( + "bytes" + "errors" + "fmt" + "io" + "os" + "path/filepath" + "sort" + "sync" + "sync/atomic" + "time" + "unsafe" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/mergeset" + "github.com/VictoriaMetrics/fastcache" + xxhash "github.com/cespare/xxhash/v2" +) + +const ( + // Prefix for MetricName->TSID entries. + nsPrefixMetricNameToTSID = 0 + + // Prefix for Tag->MetricID entries. + nsPrefixTagToMetricID = 1 + + // Prefix for MetricID->TSID entries. + nsPrefixMetricIDToTSID = 2 + + // Prefix for MetricID->MetricName entries. + nsPrefixMetricIDToMetricName = 3 + + // Prefix for deleted MetricID entries. + nsPrefixDeteletedMetricID = 4 + + // Prefix for Date->MetricID entries. + nsPrefixDateToMetricID = 5 +) + +// indexDB represents an index db. +type indexDB struct { + name string + refCount uint64 + tb *mergeset.Table + + extDB *indexDB + extDBLock sync.Mutex + + // Cache for fast TagFilters -> TSIDs lookup. + tagCache *fastcache.Cache + + // Cache for fast MetricID -> TSID lookup. + metricIDCache *fastcache.Cache + + // Cache for fast MetricID -> MetricName lookup. + metricNameCache *fastcache.Cache + + indexSearchPool sync.Pool + + // An inmemory map[uint64]struct{} of deleted metricIDs. + // + // The map holds deleted metricIDs for the current db and for the extDB. + // + // It is safe to keep the map in memory even for big number of deleted + // metricIDs, since it occupies only 8 bytes per deleted metricID. + deletedMetricIDs atomic.Value + deletedMetricIDsUpdateLock sync.Mutex + + // The number of missing MetricID -> TSID entries. + // High rate for this value means corrupted indexDB. + missingTSIDsForMetricID uint64 + + mustDrop uint64 +} + +// openIndexDB opens index db from the given path with the given caches. +func openIndexDB(path string, metricIDCache, metricNameCache *fastcache.Cache) (*indexDB, error) { + tb, err := mergeset.OpenTable(path) + if err != nil { + return nil, fmt.Errorf("cannot open indexDB %q: %s", path, err) + } + + name := filepath.Base(path) + + // Do not persist tagCache in files, since it is very volatile. + mem := memory.Allowed() + tagCache := fastcache.New(mem / 32) + + db := &indexDB{ + refCount: 1, + tb: tb, + name: name, + + tagCache: tagCache, + metricIDCache: metricIDCache, + metricNameCache: metricNameCache, + } + + is := db.getIndexSearch() + dmis, err := is.loadDeletedMetricIDs() + db.putIndexSearch(is) + if err != nil { + return nil, fmt.Errorf("cannot load deleted metricIDs: %s", err) + } + db.setDeletedMetricIDs(dmis) + + return db, nil +} + +// IndexDBMetrics contains essential metrics for indexDB. +type IndexDBMetrics struct { + TagCacheSize uint64 + TagCacheBytesSize uint64 + TagCacheRequests uint64 + TagCacheMisses uint64 + + DeletedMetricsCount uint64 + + IndexDBRefCount uint64 + + MissingTSIDsForMetricID uint64 + + mergeset.TableMetrics +} + +func (db *indexDB) scheduleToDrop() { + atomic.AddUint64(&db.mustDrop, 1) +} + +// UpdateMetrics updates m with metrics from the db. +func (db *indexDB) UpdateMetrics(m *IndexDBMetrics) { + var cs fastcache.Stats + db.tagCache.UpdateStats(&cs) + m.TagCacheSize += cs.EntriesCount + m.TagCacheBytesSize += cs.BytesSize + m.TagCacheRequests += cs.GetBigCalls + m.TagCacheMisses += cs.Misses + + m.DeletedMetricsCount += uint64(len(db.getDeletedMetricIDs())) + + m.IndexDBRefCount += atomic.LoadUint64(&db.refCount) + m.MissingTSIDsForMetricID += atomic.LoadUint64(&db.missingTSIDsForMetricID) + + db.tb.UpdateMetrics(&m.TableMetrics) + db.doExtDB(func(extDB *indexDB) { + extDB.tb.UpdateMetrics(&m.TableMetrics) + m.IndexDBRefCount += atomic.LoadUint64(&extDB.refCount) + }) +} + +func (db *indexDB) doExtDB(f func(extDB *indexDB)) bool { + db.extDBLock.Lock() + extDB := db.extDB + if extDB != nil { + extDB.incRef() + } + db.extDBLock.Unlock() + if extDB == nil { + return false + } + f(extDB) + extDB.decRef() + return true +} + +// SetExtDB sets external db to search. +// +// It decrements refCount for the previous extDB. +func (db *indexDB) SetExtDB(extDB *indexDB) { + // Add deleted metricIDs from extDB to db. + if extDB != nil { + dmisExt := extDB.getDeletedMetricIDs() + metricIDs := getSortedMetricIDs(dmisExt) + db.updateDeletedMetricIDs(metricIDs) + } + + db.extDBLock.Lock() + prevExtDB := db.extDB + db.extDB = extDB + db.extDBLock.Unlock() + + if prevExtDB != nil { + prevExtDB.decRef() + } +} + +// MustClose closes db. +func (db *indexDB) MustClose() { + db.decRef() +} + +func (db *indexDB) incRef() { + atomic.AddUint64(&db.refCount, 1) +} + +func (db *indexDB) decRef() { + n := atomic.AddUint64(&db.refCount, ^uint64(0)) + if n < 0 { + logger.Panicf("BUG: negative refCount: %d", n) + } + if n > 0 { + return + } + + tbPath := db.tb.Path() + db.tb.MustClose() + db.SetExtDB(nil) + + if atomic.LoadUint64(&db.mustDrop) == 0 { + return + } + + logger.Infof("dropping indexDB %q", tbPath) + if err := os.RemoveAll(tbPath); err != nil { + logger.Panicf("FATAL: cannot remove %q: %s", tbPath, err) + } + logger.Infof("indexDB %q has been dropped", tbPath) +} + +func (db *indexDB) getFromTagCache(key []byte) ([]TSID, bool) { + value := db.tagCache.GetBig(nil, key) + if len(value) == 0 { + return nil, false + } + tsids, err := unmarshalTSIDs(nil, value) + if err != nil { + logger.Panicf("FATAL: cannot unmarshal tsids from tagCache: %s", err) + } + return tsids, true +} + +func (db *indexDB) putToTagCache(tsids []TSID, key []byte) { + value := marshalTSIDs(nil, tsids) + db.tagCache.SetBig(key, value) +} + +func (db *indexDB) getFromMetricIDCache(dst *TSID, metricID uint64) error { + // There is no need in checking for deleted metricIDs here, since they + // must be checked by the caller. + buf := (*[unsafe.Sizeof(*dst)]byte)(unsafe.Pointer(dst)) + key := (*[unsafe.Sizeof(metricID)]byte)(unsafe.Pointer(&metricID)) + tmp := db.metricIDCache.Get(buf[:0], key[:]) + if len(tmp) == 0 { + // The TSID for the given metricID wasn't found in the cache. + return io.EOF + } + if &tmp[0] != &buf[0] || len(tmp) != len(buf) { + return fmt.Errorf("corrupted MetricID->TSID cache: unexpected size for metricID=%d value; got %d bytes; want %d bytes", metricID, len(tmp), len(buf)) + } + return nil +} + +func (db *indexDB) putToMetricIDCache(metricID uint64, tsid *TSID) { + buf := (*[unsafe.Sizeof(*tsid)]byte)(unsafe.Pointer(tsid)) + key := (*[unsafe.Sizeof(metricID)]byte)(unsafe.Pointer(&metricID)) + db.metricIDCache.Set(key[:], buf[:]) +} + +func (db *indexDB) getMetricNameFromCache(dst []byte, metricID uint64) []byte { + // There is no need in checking for deleted metricIDs here, since they + // must be checked by the caller. + key := (*[unsafe.Sizeof(metricID)]byte)(unsafe.Pointer(&metricID)) + return db.metricNameCache.Get(dst, key[:]) +} + +func (db *indexDB) putMetricNameToCache(metricID uint64, metricName []byte) { + key := (*[unsafe.Sizeof(metricID)]byte)(unsafe.Pointer(&metricID)) + db.metricNameCache.Set(key[:], metricName) +} + +func marshalTagFiltersKey(dst []byte, tfss []*TagFilters) []byte { + prefix := atomic.LoadUint64(&tagFiltersKeyGen) + dst = encoding.MarshalUint64(dst, prefix) + for _, tfs := range tfss { + dst = append(dst, 0) // separator between tfs groups. + for i := range tfs.tfs { + dst = tfs.tfs[i].Marshal(dst) + } + } + return dst +} + +func marshalTSIDs(dst []byte, tsids []TSID) []byte { + dst = encoding.MarshalUint64(dst, uint64(len(tsids))) + for i := range tsids { + dst = tsids[i].Marshal(dst) + } + return dst +} + +func unmarshalTSIDs(dst []TSID, src []byte) ([]TSID, error) { + if len(src) < 8 { + return dst, fmt.Errorf("cannot unmarshal the number of tsids from %d bytes; require at least %d bytes", len(src), 8) + } + n := encoding.UnmarshalUint64(src) + src = src[8:] + dstLen := len(dst) + if nn := dstLen + int(n) - cap(dst); nn > 0 { + dst = append(dst[:cap(dst)], make([]TSID, nn)...) + } + dst = dst[:dstLen+int(n)] + for i := 0; i < int(n); i++ { + tail, err := dst[dstLen+i].Unmarshal(src) + if err != nil { + return dst, fmt.Errorf("cannot unmarshal tsid #%d out of %d: %s", i, n, err) + } + src = tail + } + if len(src) > 0 { + return dst, fmt.Errorf("non-zero tail left after unmarshaling %d tsids; len(tail)=%d", n, len(src)) + } + return dst, nil +} + +func (db *indexDB) invalidateTagCache() { + // This function must be fast, since it is called each + // time new timeseries is added. + atomic.AddUint64(&tagFiltersKeyGen, 1) +} + +var tagFiltersKeyGen uint64 + +// getTSIDByNameNoCreate fills the dst with TSID for the given metricName. +// +// It returns io.EOF if the given mn isn't found locally. +func (db *indexDB) getTSIDByNameNoCreate(dst *TSID, metricName []byte) error { + is := db.getIndexSearch() + err := is.getTSIDByMetricName(dst, metricName) + db.putIndexSearch(is) + if err == nil { + return nil + } + if err != io.EOF { + return fmt.Errorf("cannot search TSID by MetricName %q: %s", metricName, err) + } + + // Do not search for the TSID in the external storage, + // since this function is already called by another indexDB instance. + + // The TSID for the given mn wasn't found. + return io.EOF +} + +type indexSearch struct { + db *indexDB + ts mergeset.TableSearch + kb bytesutil.ByteBuffer + + // tsidByNameMisses and tsidByNameSkips is used for a performance + // hack in GetOrCreateTSIDByName. See the comment there. + tsidByNameMisses int + tsidByNameSkips int +} + +// GetOrCreateTSIDByName fills the dst with TSID for the given metricName. +func (is *indexSearch) GetOrCreateTSIDByName(dst *TSID, metricName []byte) error { + // A hack: skip searching for the TSID after many serial misses. + // This should improve insertion performance for big batches + // of new time series. + if is.tsidByNameMisses < 100 { + err := is.getTSIDByMetricName(dst, metricName) + if err == nil { + is.tsidByNameMisses = 0 + return nil + } + if err != io.EOF { + return fmt.Errorf("cannot search TSID by MetricName %q: %s", metricName, err) + } + is.tsidByNameMisses++ + } else { + is.tsidByNameSkips++ + if is.tsidByNameSkips > 10000 { + is.tsidByNameSkips = 0 + is.tsidByNameMisses = 0 + } + } + + // TSID for the given name wasn't found. Create it. + // It is OK if duplicate TSID for mn is created by concurrent goroutines. + // Metric results will be merged by mn after TableSearch. + if err := is.db.createTSIDByName(dst, metricName); err != nil { + return fmt.Errorf("cannot create TSID by MetricName %q: %s", metricName, err) + } + return nil +} + +func (db *indexDB) getIndexSearch() *indexSearch { + v := db.indexSearchPool.Get() + if v == nil { + v = &indexSearch{ + db: db, + } + } + is := v.(*indexSearch) + is.ts.Init(db.tb) + return is +} + +func (db *indexDB) putIndexSearch(is *indexSearch) { + is.ts.MustClose() + is.kb.Reset() + + // Do not reset tsidByNameMisses and tsidByNameSkips, + // since they are used in GetOrCreateTSIDByName across call boundaries. + + db.indexSearchPool.Put(is) +} + +func (db *indexDB) createTSIDByName(dst *TSID, metricName []byte) error { + mn := GetMetricName() + defer PutMetricName(mn) + if err := mn.Unmarshal(metricName); err != nil { + return fmt.Errorf("cannot unmarshal metricName %q: %s", metricName, err) + } + + if err := db.generateTSID(dst, metricName, mn); err != nil { + return fmt.Errorf("cannot generate TSID: %s", err) + } + if err := db.createIndexes(dst, mn); err != nil { + return fmt.Errorf("cannot create indexes: %s", err) + } + + // Invalidate tag cache, since it doesn't contain tags for the created mn -> TSID mapping. + db.invalidateTagCache() + + return nil +} + +func (db *indexDB) generateTSID(dst *TSID, metricName []byte, mn *MetricName) error { + // Search the TSID in the external storage. + // This is usually the db from the previous period. + var err error + if db.doExtDB(func(extDB *indexDB) { + err = extDB.getTSIDByNameNoCreate(dst, metricName) + }) { + if err == nil { + // The TSID has been found in the external storage. + return nil + } + if err != io.EOF { + return fmt.Errorf("external search failed: %s", err) + } + } + + // The TSID wan't found in the external storage. + // Generate it locally. + dst.MetricGroupID = xxhash.Sum64(mn.MetricGroup) + if len(mn.Tags) > 0 { + dst.JobID = uint32(xxhash.Sum64(mn.Tags[0].Value)) + } + if len(mn.Tags) > 1 { + dst.InstanceID = uint32(xxhash.Sum64(mn.Tags[1].Value)) + } + dst.MetricID = getUniqueUint64() + return nil +} + +func (db *indexDB) createIndexes(tsid *TSID, mn *MetricName) error { + // The order of index items is important. + // It guarantees index consistency. + + items := getIndexItems() + + // Create MetricName -> TSID index. + items.B = append(items.B, nsPrefixMetricNameToTSID) + items.B = mn.Marshal(items.B) + items.B = append(items.B, kvSeparatorChar) + items.B = tsid.Marshal(items.B) + items.Next() + + // Create MetricID -> MetricName index. + items.B = marshalCommonPrefix(items.B, nsPrefixMetricIDToMetricName) + items.B = encoding.MarshalUint64(items.B, tsid.MetricID) + items.B = mn.Marshal(items.B) + items.Next() + + // Create MetricID -> TSID index. + items.B = marshalCommonPrefix(items.B, nsPrefixMetricIDToTSID) + items.B = encoding.MarshalUint64(items.B, tsid.MetricID) + items.B = tsid.Marshal(items.B) + items.Next() + + commonPrefix := kbPool.Get() + commonPrefix.B = marshalCommonPrefix(commonPrefix.B[:0], nsPrefixTagToMetricID) + + // Create MetricGroup -> MetricID index. + items.B = append(items.B, commonPrefix.B...) + items.B = marshalTagValue(items.B, nil) + items.B = marshalTagValue(items.B, mn.MetricGroup) + items.B = encoding.MarshalUint64(items.B, tsid.MetricID) + items.Next() + + // For each tag create tag -> MetricID index. + for i := range mn.Tags { + tag := &mn.Tags[i] + items.B = append(items.B, commonPrefix.B...) + items.B = tag.Marshal(items.B) + items.B = encoding.MarshalUint64(items.B, tsid.MetricID) + items.Next() + } + + kbPool.Put(commonPrefix) + err := db.tb.AddItems(items.Items) + putIndexItems(items) + return err +} + +type indexItems struct { + B []byte + Items [][]byte + + start int +} + +func (ii *indexItems) reset() { + ii.B = ii.B[:0] + ii.Items = ii.Items[:0] + ii.start = 0 +} + +func (ii *indexItems) Next() { + ii.Items = append(ii.Items, ii.B[ii.start:]) + ii.start = len(ii.B) +} + +func getIndexItems() *indexItems { + v := indexItemsPool.Get() + if v == nil { + return &indexItems{} + } + return v.(*indexItems) +} + +func putIndexItems(ii *indexItems) { + ii.reset() + indexItemsPool.Put(ii) +} + +var indexItemsPool sync.Pool + +// SearchTagKeys returns all the tag keys. +func (db *indexDB) SearchTagKeys(maxTagKeys int) ([]string, error) { + // TODO: cache results? + + tks := make(map[string]struct{}) + + is := db.getIndexSearch() + err := is.searchTagKeys(tks, maxTagKeys) + db.putIndexSearch(is) + if err != nil { + return nil, err + } + + ok := db.doExtDB(func(extDB *indexDB) { + is := extDB.getIndexSearch() + err = is.searchTagKeys(tks, maxTagKeys) + extDB.putIndexSearch(is) + }) + if ok && err != nil { + return nil, err + } + + keys := make([]string, 0, len(tks)) + for key := range tks { + keys = append(keys, key) + } + + // Do not sort keys, since they must be sorted by vmselect. + return keys, nil +} + +func (is *indexSearch) searchTagKeys(tks map[string]struct{}, maxTagKeys int) error { + ts := &is.ts + kb := &is.kb + dmis := is.db.getDeletedMetricIDs() + commonPrefix := marshalCommonPrefix(nil, nsPrefixTagToMetricID) + ts.Seek(commonPrefix) + for len(tks) < maxTagKeys && ts.NextItem() { + item := ts.Item + if !bytes.HasPrefix(item, commonPrefix) { + break + } + tail := item[len(commonPrefix):] + + // Unmarshal tag key into kb.B + var err error + tail, kb.B, err = unmarshalTagValue(kb.B[:0], tail) + if err != nil { + return fmt.Errorf("cannot unmarshal tagKey from %X: %s", item, err) + } + + // Verify that the tag key points to existing metric. + if len(tail) < 8 { + return fmt.Errorf("cannot unmarshal metricID from less than 8 bytes; got %d bytes; item=%X", len(tail), tail) + } + metricID := encoding.UnmarshalUint64(tail[len(tail)-8:]) + if _, deleted := dmis[metricID]; deleted { + // The given metric is deleted. Skip it. + continue + } + + // Store tag key. + tks[string(kb.B)] = struct{}{} + + // Search for the next tag key. + // tkp (tag key prefix) contains (commonPrefix + encoded tag key). + // The last char must be tagSeparatorChar. Just increment it + // in order to jump to the next tag key. + tkp := item[:len(item)-len(tail)] + if len(tkp) == 0 || tkp[len(tkp)-1] != tagSeparatorChar || tagSeparatorChar >= 0xff { + logger.Panicf("BUG: the last char in tkp=%X must be %X. Check unmarshalTagValue code", tkp, tagSeparatorChar) + } + kb.B = append(kb.B[:0], tkp...) + kb.B[len(kb.B)-1]++ + ts.Seek(kb.B) + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error during search for commonPrefix %q: %s", commonPrefix, err) + } + return nil +} + +// SearchTagValues returns all the tag values for the given tagKey +func (db *indexDB) SearchTagValues(tagKey []byte, maxTagValues int) ([]string, error) { + // TODO: cache results? + + kb := kbPool.Get() + kb.B = marshalCommonPrefix(kb.B[:0], nsPrefixTagToMetricID) + kb.B = marshalTagValue(kb.B, tagKey) + + tvs := make(map[string]struct{}) + is := db.getIndexSearch() + err := is.searchTagValues(tvs, kb.B, maxTagValues) + db.putIndexSearch(is) + if err != nil { + kbPool.Put(kb) + return nil, err + } + ok := db.doExtDB(func(extDB *indexDB) { + is := extDB.getIndexSearch() + err = is.searchTagValues(tvs, kb.B, maxTagValues) + extDB.putIndexSearch(is) + }) + kbPool.Put(kb) + if ok && err != nil { + return nil, err + } + + tagValues := make([]string, 0, len(tvs)) + for tv := range tvs { + tagValues = append(tagValues, tv) + } + + // Do not sort tagValues, since they must be sorted by vmselect. + return tagValues, nil +} + +func (is *indexSearch) searchTagValues(tvs map[string]struct{}, prefix []byte, maxTagValues int) error { + ts := &is.ts + kb := &is.kb + dmis := is.db.getDeletedMetricIDs() + ts.Seek(prefix) + for len(tvs) < maxTagValues && ts.NextItem() { + k := ts.Item + if !bytes.HasPrefix(k, prefix) { + break + } + + // Get TagValue + k = k[len(prefix):] + var err error + k, kb.B, err = unmarshalTagValue(kb.B[:0], k) + if err != nil { + return fmt.Errorf("cannot unmarshal tagValue: %s", err) + } + if len(k) != 8 { + return fmt.Errorf("unexpected suffix after tag value; want %d bytes; got %d bytes", 8, len(k)) + } + + // Verify whether the corresponding metric is deleted. + if len(dmis) > 0 { + metricID := encoding.UnmarshalUint64(k) + if _, deleted := dmis[metricID]; deleted { + // The metric is deleted. + continue + } + } + + // Store tag value + tvs[string(kb.B)] = struct{}{} + + // Search for the next tag value. + // tkp (tag key prefix) contains (commonPrefix + encoded tag value). + // The last char must be tagSeparatorChar. Just increment it + // in order to jump to the next tag key. + tkp := ts.Item[:len(ts.Item)-8] + if len(tkp) == 0 || tkp[len(tkp)-1] != tagSeparatorChar || tagSeparatorChar >= 0xff { + logger.Panicf("BUG: the last char in tkp=%X must be %X. Check unmarshalTagValue code", tkp, tagSeparatorChar) + } + kb.B = append(kb.B[:0], tkp...) + kb.B[len(kb.B)-1]++ + ts.Seek(kb.B) + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error when searching for tag name prefix %q: %s", prefix, err) + } + return nil +} + +// GetSeriesCount returns the approximate number of unique timeseries in the db. +// +// It includes the deleted series too and may count the same series +// up to two times - in db and extDB. +func (db *indexDB) GetSeriesCount() (uint64, error) { + is := db.getIndexSearch() + n, err := getSeriesCount(&is.ts, &is.kb) + db.putIndexSearch(is) + if err != nil { + return 0, err + } + + var nExt uint64 + ok := db.doExtDB(func(extDB *indexDB) { + is := extDB.getIndexSearch() + nExt, err = getSeriesCount(&is.ts, &is.kb) + extDB.putIndexSearch(is) + }) + if ok && err != nil { + return 0, err + } + return n + nExt, nil +} + +// searchMetricName appends metric name for the given metricID to dst +// and returns the result. +func (db *indexDB) searchMetricName(dst []byte, metricID uint64) ([]byte, error) { + is := db.getIndexSearch() + dst, err := is.searchMetricName(dst, metricID) + db.putIndexSearch(is) + + if err != io.EOF { + return dst, err + } + + // Try searching in the external indexDB. + if db.doExtDB(func(extDB *indexDB) { + is := extDB.getIndexSearch() + dst, err = is.searchMetricName(dst, metricID) + extDB.putIndexSearch(is) + }) { + return dst, err + } + + // Cannot find MetricName for the given metricID. This may be the case + // when indexDB contains incomplete set of metricID -> metricName entries + // after a snapshot or due to unflushed entries. + return dst, io.EOF +} + +// DeleteTSIDs marks as deleted all the TSIDs matching the given tfss. +// +// The caller must reset all the caches which may contain the deleted TSIDs. +// +// Returns the number of metrics deleted. +func (db *indexDB) DeleteTSIDs(tfss []*TagFilters) (int, error) { + if len(tfss) == 0 { + return 0, nil + } + + // Obtain metricIDs to delete. + is := db.getIndexSearch() + metricIDs, err := is.searchMetricIDs(tfss, TimeRange{}, 1e9) + db.putIndexSearch(is) + if err != nil { + return 0, err + } + if len(metricIDs) == 0 { + // Nothing to delete + return 0, nil + } + + // Mark the found metricIDs as deleted. + items := getIndexItems() + for _, metricID := range metricIDs { + items.B = append(items.B, nsPrefixDeteletedMetricID) + items.B = encoding.MarshalUint64(items.B, metricID) + items.Next() + } + err = db.tb.AddItems(items.Items) + putIndexItems(items) + if err != nil { + return 0, err + } + deletedCount := len(metricIDs) + + // atomically add deleted metricIDs to an inmemory map. + db.updateDeletedMetricIDs(metricIDs) + + // Reset TagFilters -> TSIDS cache, since it may contain deleted TSIDs. + db.invalidateTagCache() + + // Delete TSIDs in the extDB. + if db.doExtDB(func(extDB *indexDB) { + var n int + n, err = extDB.DeleteTSIDs(tfss) + deletedCount += n + }) { + if err != nil { + return deletedCount, fmt.Errorf("cannot delete tsids in extDB: %s", err) + } + } + return deletedCount, nil +} + +func (db *indexDB) getDeletedMetricIDs() map[uint64]struct{} { + return db.deletedMetricIDs.Load().(map[uint64]struct{}) +} + +func (db *indexDB) setDeletedMetricIDs(dmis map[uint64]struct{}) { + db.deletedMetricIDs.Store(dmis) +} + +func (db *indexDB) updateDeletedMetricIDs(metricIDs []uint64) { + db.deletedMetricIDsUpdateLock.Lock() + dmisOld := db.getDeletedMetricIDs() + dmisNew := make(map[uint64]struct{}, len(dmisOld)+len(metricIDs)) + for metricID := range dmisOld { + dmisNew[metricID] = struct{}{} + } + for _, metricID := range metricIDs { + dmisNew[metricID] = struct{}{} + } + db.setDeletedMetricIDs(dmisNew) + db.deletedMetricIDsUpdateLock.Unlock() +} + +func (is *indexSearch) loadDeletedMetricIDs() (map[uint64]struct{}, error) { + dmis := make(map[uint64]struct{}) + ts := &is.ts + kb := &is.kb + kb.B = append(kb.B[:0], nsPrefixDeteletedMetricID) + ts.Seek(kb.B) + for ts.NextItem() { + item := ts.Item + if !bytes.HasPrefix(item, kb.B) { + break + } + item = item[len(kb.B):] + if len(item) != 8 { + return nil, fmt.Errorf("unexpected item len; got %d bytes; want %d bytes", len(item), 8) + } + metricID := encoding.UnmarshalUint64(item) + dmis[metricID] = struct{}{} + } + if err := ts.Error(); err != nil { + return nil, err + } + return dmis, nil +} + +// searchTSIDs returns tsids matching the given tfss over the given tr. +func (db *indexDB) searchTSIDs(tfss []*TagFilters, tr TimeRange, maxMetrics int) ([]TSID, error) { + if len(tfss) == 0 { + return nil, nil + } + + tfKeyBuf := tagFiltersKeyBufPool.Get() + defer tagFiltersKeyBufPool.Put(tfKeyBuf) + + tfKeyBuf.B = marshalTagFiltersKey(tfKeyBuf.B[:0], tfss) + tsids, ok := db.getFromTagCache(tfKeyBuf.B) + if ok { + // Fast path - tsids found in the cache. + return tsids, nil + } + + // Slow path - search for tsids in the db and extDB. + is := db.getIndexSearch() + localTSIDs, err := is.searchTSIDs(tfss, tr, maxMetrics) + db.putIndexSearch(is) + if err != nil { + return nil, err + } + + var extTSIDs []TSID + if db.doExtDB(func(extDB *indexDB) { + tsids, ok := extDB.getFromTagCache(tfKeyBuf.B) + if ok { + extTSIDs = tsids + return + } + is := extDB.getIndexSearch() + extTSIDs, err = is.searchTSIDs(tfss, tr, maxMetrics) + extDB.putIndexSearch(is) + + // Do not store found tsids into extDB.tagCache, + // since they will be stored into outer cache instead. + }) { + if err != nil { + return nil, err + } + } + + // Merge localTSIDs with extTSIDs. + tsids = mergeTSIDs(localTSIDs, extTSIDs) + + // Sort the found tsids, since they must be passed to TSID search + // in the sorted order. + sort.Slice(tsids, func(i, j int) bool { return tsids[i].Less(&tsids[j]) }) + + // Store TSIDs in the cache. + db.putToTagCache(tsids, tfKeyBuf.B) + + return tsids, err +} + +var tagFiltersKeyBufPool bytesutil.ByteBufferPool + +func (is *indexSearch) getTSIDByMetricName(dst *TSID, metricName []byte) error { + dmis := is.db.getDeletedMetricIDs() + ts := &is.ts + kb := &is.kb + kb.B = append(kb.B[:0], nsPrefixMetricNameToTSID) + kb.B = append(kb.B, metricName...) + kb.B = append(kb.B, kvSeparatorChar) + ts.Seek(kb.B) + for ts.NextItem() { + if !bytes.HasPrefix(ts.Item, kb.B) { + // Nothing found. + return io.EOF + } + v := ts.Item[len(kb.B):] + tail, err := dst.Unmarshal(v) + if err != nil { + return fmt.Errorf("cannot unmarshal TSID: %s", err) + } + if len(tail) > 0 { + return fmt.Errorf("unexpected non-empty tail left after unmarshaling TSID: %X", tail) + } + if len(dmis) > 0 { + // Verify whether the dst is marked as deleted. + if _, deleted := dmis[dst.MetricID]; deleted { + // The dst is deleted. Continue seraching. + continue + } + } + // Found valid dst. + return nil + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error when searching TSID by metricName; searchPrefix %q: %s", kb.B, err) + } + // Nothing found + return io.EOF +} + +func (is *indexSearch) searchMetricName(dst []byte, metricID uint64) ([]byte, error) { + metricName := is.db.getMetricNameFromCache(dst, metricID) + if len(metricName) > len(dst) { + return metricName, nil + } + + ts := &is.ts + kb := &is.kb + kb.B = marshalCommonPrefix(kb.B[:0], nsPrefixMetricIDToMetricName) + kb.B = encoding.MarshalUint64(kb.B, metricID) + if err := ts.FirstItemWithPrefix(kb.B); err != nil { + if err == io.EOF { + return dst, err + } + return dst, fmt.Errorf("error when searching metricName by metricID; searchPrefix %q: %s", kb.B, err) + } + v := ts.Item[len(kb.B):] + dst = append(dst, v...) + + // There is no need in verifying whether the given metricID is deleted, + // since the filtering must be performed before calling this func. + is.db.putMetricNameToCache(metricID, dst) + return dst, nil +} + +func mergeTSIDs(a, b []TSID) []TSID { + if len(b) > len(a) { + a, b = b, a + } + if len(b) == 0 { + return a + } + m := make(map[uint64]TSID, len(a)) + for i := range a { + tsid := &a[i] + m[tsid.MetricID] = *tsid + } + for i := range b { + tsid := &b[i] + m[tsid.MetricID] = *tsid + } + + tsids := make([]TSID, 0, len(m)) + for _, tsid := range m { + tsids = append(tsids, tsid) + } + return tsids +} + +func (is *indexSearch) searchTSIDs(tfss []*TagFilters, tr TimeRange, maxMetrics int) ([]TSID, error) { + metricIDs, err := is.searchMetricIDs(tfss, tr, maxMetrics) + if err != nil { + return nil, err + } + if len(metricIDs) == 0 { + // Nothing found. + return nil, nil + } + + // Obtain TSID values for the given metricIDs. + tsids := make([]TSID, len(metricIDs)) + i := 0 + for _, metricID := range metricIDs { + // Try obtaining TSIDs from db.tsidCache. This is much faster + // than scanning the mergeset if it contains a lot of metricIDs. + tsid := &tsids[i] + err := is.db.getFromMetricIDCache(tsid, metricID) + if err == nil { + // Fast path - the tsid for metricID is found in cache. + i++ + continue + } + if err != io.EOF { + return nil, err + } + if err := is.getTSIDByMetricID(tsid, metricID); err != nil { + if err == io.EOF { + // Cannot find TSID for the given metricID. + // This may be the case on incomplete indexDB + // due to snapshot or due to unflushed entries. + // Just increment errors counter and skip it. + atomic.AddUint64(&is.db.missingTSIDsForMetricID, 1) + continue + } + return nil, fmt.Errorf("cannot find tsid %d out of %d for metricID %d: %s", i, len(metricIDs), metricID, err) + } + is.db.putToMetricIDCache(metricID, tsid) + i++ + } + tsids = tsids[:i] + + // Do not sort the found tsids, since they will be sorted later. + return tsids, nil +} + +func (is *indexSearch) getTSIDByMetricID(dst *TSID, metricID uint64) error { + // There is no need in checking for deleted metricIDs here, since they + // must be checked by the caller. + ts := &is.ts + kb := &is.kb + kb.B = marshalCommonPrefix(kb.B[:0], nsPrefixMetricIDToTSID) + kb.B = encoding.MarshalUint64(kb.B, metricID) + if err := ts.FirstItemWithPrefix(kb.B); err != nil { + if err == io.EOF { + return err + } + return fmt.Errorf("error when searching TSID by metricID; searchPrefix %q: %s", kb.B, err) + } + v := ts.Item[len(kb.B):] + tail, err := dst.Unmarshal(v) + if err != nil { + return fmt.Errorf("cannot unmarshal TSID=%X: %s", v, err) + } + if len(tail) > 0 { + return fmt.Errorf("unexpected non-zero tail left after unmarshaling TSID: %X", tail) + } + return nil +} + +func getSeriesCount(ts *mergeset.TableSearch, kb *bytesutil.ByteBuffer) (uint64, error) { + var n uint64 + kb.B = append(kb.B[:0], nsPrefixMetricIDToTSID) + ts.Seek(kb.B) + for ts.NextItem() { + if !bytes.HasPrefix(ts.Item, kb.B) { + break + } + // Take into account deleted timeseries too. + n++ + } + if err := ts.Error(); err != nil { + return 0, fmt.Errorf("error when counting unique timeseries: %s", err) + } + return n, nil +} + +// searchMetricIDsMapByMetricNameMatch matches metricName values for the given srcMetricIDs against tfs +// and adds matching metrics to metricIDs. +func (is *indexSearch) searchMetricIDsMapByMetricNameMatch(metricIDs, srcMetricIDs map[uint64]struct{}, tfs []*tagFilter) error { + // sort srcMetricIDs in order to speed up Seek below. + sortedMetricIDs := make([]uint64, 0, len(srcMetricIDs)) + for metricID := range srcMetricIDs { + sortedMetricIDs = append(sortedMetricIDs, metricID) + } + sort.Slice(sortedMetricIDs, func(i, j int) bool { return sortedMetricIDs[i] < sortedMetricIDs[j] }) + + metricName := kbPool.Get() + defer kbPool.Put(metricName) + mn := GetMetricName() + defer PutMetricName(mn) + for _, metricID := range sortedMetricIDs { + var err error + metricName.B, err = is.searchMetricName(metricName.B[:0], metricID) + if err != nil { + return fmt.Errorf("cannot find metricName by metricID %d: %s", metricID, err) + } + if err := mn.Unmarshal(metricName.B); err != nil { + return fmt.Errorf("cannot unmarshal metricName %q: %s", metricName.B, err) + } + + // Match the mn against tfs. + ok, err := matchTagFilters(mn, tfs, &is.kb) + if err != nil { + return fmt.Errorf("cannot match MetricName %s against tagFilters: %s", mn, err) + } + if !ok { + continue + } + metricIDs[metricID] = struct{}{} + } + return nil +} + +func (is *indexSearch) getTagFilterWithMinMetricIDsMap(tfs *TagFilters, maxMetrics int) (*tagFilter, map[uint64]struct{}, error) { + var minMetricIDs map[uint64]struct{} + var minTf *tagFilter + for i := range tfs.tfs { + tf := &tfs.tfs[i] + if tf.isNegative { + // Skip negative filters. + continue + } + metricIDs, err := is.getMetricIDsMapForTagFilter(tf, maxMetrics) + if err != nil { + if err == errFallbackToMetricNameMatch { + // Skip tag filters requiring to scan for too many metrics. + continue + } + return nil, nil, fmt.Errorf("cannot find MetricIDs for tagFilter %s: %s", tf, err) + } + if minTf == nil || len(metricIDs) < len(minMetricIDs) { + minMetricIDs = metricIDs + minTf = tf + maxMetrics = len(minMetricIDs) + if maxMetrics <= 1 { + // There is no need in inspecting other filters, since minTf + // already matches 0 or 1 metric. + break + } + } + } + if minTf != nil { + return minTf, minMetricIDs, nil + } + + // There is no positive filter with small number of matching metrics. + // Create it, so it matches all the MetricIDs for tfs.commonPrefix. + metricIDs := make(map[uint64]struct{}) + if err := is.getMetricIDsMapForCommonPrefix(metricIDs, tfs.commonPrefix, maxMetrics); err != nil { + return nil, nil, err + } + return nil, metricIDs, nil +} + +func matchTagFilters(mn *MetricName, tfs []*tagFilter, kb *bytesutil.ByteBuffer) (bool, error) { + kb.B = marshalCommonPrefix(kb.B[:0], nsPrefixTagToMetricID) + + for _, tf := range tfs { + if len(tf.key) == 0 { + // Match against mn.MetricGroup. + b := marshalTagValue(kb.B, nil) + b = marshalTagValue(b, mn.MetricGroup) + kb.B = b[:len(kb.B)] + ok, err := matchTagFilter(b, tf) + if err != nil { + return false, fmt.Errorf("cannot match MetricGroup %q with tagFilter %s: %s", mn.MetricGroup, tf, err) + } + if !ok { + return false, nil + } + continue + } + + // Search for matching tag name. + tagMatched := false + for j := range mn.Tags { + tag := &mn.Tags[j] + if string(tag.Key) != string(tf.key) { + continue + } + + // Found the matching tag name. Match for the value. + b := tag.Marshal(kb.B) + kb.B = b[:len(kb.B)] + ok, err := matchTagFilter(b, tf) + if err != nil { + return false, fmt.Errorf("cannot match tag %q with tagFilter %s: %s", tag, tf, err) + } + if !ok { + return false, nil + } + tagMatched = true + break + } + if !tagMatched { + // Matching tag name wasn't found. + return false, nil + } + } + return true, nil +} + +func matchTagFilter(b []byte, tf *tagFilter) (bool, error) { + if !bytes.HasPrefix(b, tf.prefix) { + return tf.isNegative, nil + } + ok, err := tf.matchSuffix(b[len(tf.prefix):]) + if err != nil { + return false, err + } + if !ok { + return tf.isNegative, nil + } + return !tf.isNegative, nil +} + +func (is *indexSearch) searchMetricIDs(tfss []*TagFilters, tr TimeRange, maxMetrics int) ([]uint64, error) { + metricIDsMap := make(map[uint64]struct{}) + for _, tfs := range tfss { + if len(tfs.tfs) == 0 { + // Return all the metric ids + if err := is.getMetricIDsMapForCommonPrefix(metricIDsMap, tfs.commonPrefix, maxMetrics+1); err != nil { + return nil, err + } + if len(metricIDsMap) > maxMetrics { + return nil, fmt.Errorf("the number or unique timeseries exceeds %d; either narrow down the search or increase -search.maxUniqueTimeseries", maxMetrics) + } + // Stop the iteration, since we cannot find more metric ids with the remaining tfss. + break + } + if err := is.searchMetricIDsMap(metricIDsMap, tfs, tr, maxMetrics+1); err != nil { + return nil, err + } + if len(metricIDsMap) > maxMetrics { + return nil, fmt.Errorf("the number or matching unique timeseries exceeds %d; either narrow down the search or increase -search.maxUniqueTimeseries", maxMetrics) + } + } + if len(metricIDsMap) == 0 { + // Nothing found + return nil, nil + } + + metricIDs := getSortedMetricIDs(metricIDsMap) + + // Filter out deleted metricIDs. + dmis := is.db.getDeletedMetricIDs() + if len(dmis) > 0 { + metricIDsFiltered := metricIDs[:0] + for _, metricID := range metricIDs { + if _, deleted := dmis[metricID]; !deleted { + metricIDsFiltered = append(metricIDsFiltered, metricID) + } + } + metricIDs = metricIDsFiltered + } + + return metricIDs, nil +} + +func (is *indexSearch) searchMetricIDsMap(metricIDs map[uint64]struct{}, tfs *TagFilters, tr TimeRange, maxMetrics int) error { + // Sort tag filters for faster ts.Seek below. + sort.Slice(tfs.tfs, func(i, j int) bool { return bytes.Compare(tfs.tfs[i].prefix, tfs.tfs[j].prefix) < 0 }) + + // Find the filter with minimum matching metrics. + // Iteratively increase maxAllowedMetrics up to maxMetrics in order to limit + // the time required for founding the tag filter with minimum matching metrics. + var minTf *tagFilter + var minMetricIDs map[uint64]struct{} + maxAllowedMetrics := 16 + if maxAllowedMetrics > maxMetrics { + maxAllowedMetrics = maxMetrics + } + for { + var err error + minTf, minMetricIDs, err = is.getTagFilterWithMinMetricIDsMap(tfs, maxAllowedMetrics) + if err != nil { + return err + } + if len(minMetricIDs) < maxAllowedMetrics { + // Found the tag filter with the minimum number of metrics. + break + } + + // Too many metrics matched. + if maxAllowedMetrics < maxMetrics { + // Increase maxAllowedMetrics and try again. + maxAllowedMetrics *= 4 + if maxAllowedMetrics > maxMetrics { + maxAllowedMetrics = maxMetrics + } + continue + } + + // The tag filter with minimum matching metrics matches at least maxMetrics. + // + // Slow path: try filtering the matching metrics by time range. + // This should work well for cases when old metrics are constantly substituted + // by big number of new metrics. For example, prometheus-operator creates many new + // metrics for each new deployment. + // + // Allow fetching up to 20*maxMetrics metrics for the given time range + // in the hope these metricIDs will be filtered out by other filters below. + maxTimeRangeMetrics := 20 * maxMetrics + metricIDsForTimeRange, err := is.getMetricIDsForTimeRange(tr, maxTimeRangeMetrics+1) + if err == errMissingMetricIDsForDate { + // Give up. + for metricID := range minMetricIDs { + metricIDs[metricID] = struct{}{} + } + return nil + } + if err != nil { + return err + } + if len(metricIDsForTimeRange) > maxTimeRangeMetrics { + return fmt.Errorf("more than %d time series found on the time range %s; either increase -search.maxUniqueTimeseries or shrink the time range", + maxTimeRangeMetrics, tr.String()) + } + minMetricIDs = metricIDsForTimeRange + minTf = nil + break + } + + // Find intersection of minTf with other tfs. + var tfsPostponed []*tagFilter + for i := range tfs.tfs { + tf := &tfs.tfs[i] + if tf == minTf { + continue + } + mIDs, err := is.intersectMetricIDsMapForTagFilter(tf, minMetricIDs) + if err == errFallbackToMetricNameMatch { + // The tag filter requires too many index scans. Postpone it, + // so tag filters with lower number of index scans may be applied. + tfsPostponed = append(tfsPostponed, tf) + continue + } + if err != nil { + return err + } + minMetricIDs = mIDs + } + for i, tf := range tfsPostponed { + mIDs, err := is.intersectMetricIDsMapForTagFilter(tf, minMetricIDs) + if err == errFallbackToMetricNameMatch { + return is.searchMetricIDsMapByMetricNameMatch(metricIDs, minMetricIDs, tfsPostponed[i:]) + } + if err != nil { + return err + } + minMetricIDs = mIDs + } + for metricID := range minMetricIDs { + metricIDs[metricID] = struct{}{} + } + return nil +} + +func (is *indexSearch) getMetricIDsMapForTagFilter(tf *tagFilter, maxMetrics int) (map[uint64]struct{}, error) { + if tf.isNegative { + logger.Panicf("BUG: isNegative must be false") + } + metricIDs := make(map[uint64]struct{}, maxMetrics) + if len(tf.orSuffixes) > 0 { + // Fast path for orSuffixes - seek for rows for each value from orSuffxies. + if err := is.updateMetricIDsMapForOrSuffixesNoFilter(tf, maxMetrics, metricIDs); err != nil { + return nil, err + } + return metricIDs, nil + } + + // Slow path - scan all the rows with tf.prefix + maxLoops := maxMetrics * maxIndexScanLoopsPerMetric + loops := 0 + ts := &is.ts + ts.Seek(tf.prefix) + for len(metricIDs) < maxMetrics && ts.NextItem() { + loops++ + if loops > maxLoops { + return nil, errFallbackToMetricNameMatch + } + + k := ts.Item + if !bytes.HasPrefix(k, tf.prefix) { + break + } + + // Get MetricID from k (the last 8 bytes). + k = k[len(tf.prefix):] + if len(k) < 8 { + return nil, fmt.Errorf("invald key suffix size; want at least %d bytes; got %d bytes", 8, len(k)) + } + v := k[len(k)-8:] + k = k[:len(k)-8] + + ok, err := tf.matchSuffix(k) + if err != nil { + return nil, fmt.Errorf("error when matching %s: %s", tf, err) + } + if !ok { + continue + } + metricID := encoding.UnmarshalUint64(v) + metricIDs[metricID] = struct{}{} + } + if err := ts.Error(); err != nil { + return nil, fmt.Errorf("error when searching for tag filter prefix %q: %s", tf.prefix, err) + } + return metricIDs, nil +} + +func (is *indexSearch) updateMetricIDsMapForOrSuffixesNoFilter(tf *tagFilter, maxMetrics int, metricIDs map[uint64]struct{}) error { + if tf.isNegative { + logger.Panicf("BUG: isNegative must be false") + } + kb := kbPool.Get() + defer kbPool.Put(kb) + for _, orSuffix := range tf.orSuffixes { + kb.B = append(kb.B[:0], tf.prefix...) + kb.B = append(kb.B, orSuffix...) + kb.B = append(kb.B, tagSeparatorChar) + if err := is.updateMetricIDsMapForOrSuffixNoFilter(kb.B, maxMetrics, metricIDs); err != nil { + return err + } + if len(metricIDs) >= maxMetrics { + return nil + } + } + return nil +} + +func (is *indexSearch) updateMetricIDsMapForOrSuffixesWithFilter(tf *tagFilter, metricIDs, filter map[uint64]struct{}) error { + sortedFilter := getSortedMetricIDs(filter) + kb := kbPool.Get() + defer kbPool.Put(kb) + for _, orSuffix := range tf.orSuffixes { + kb.B = append(kb.B[:0], tf.prefix...) + kb.B = append(kb.B, orSuffix...) + kb.B = append(kb.B, tagSeparatorChar) + if err := is.updateMetricIDsMapForOrSuffixWithFilter(kb.B, metricIDs, sortedFilter, tf.isNegative); err != nil { + return err + } + } + return nil +} + +func (is *indexSearch) updateMetricIDsMapForOrSuffixNoFilter(prefix []byte, maxMetrics int, metricIDs map[uint64]struct{}) error { + ts := &is.ts + maxLoops := maxMetrics * maxIndexScanLoopsPerMetric + loops := 0 + ts.Seek(prefix) + for len(metricIDs) < maxMetrics && ts.NextItem() { + loops++ + if loops > maxLoops { + return errFallbackToMetricNameMatch + } + if !bytes.HasPrefix(ts.Item, prefix) { + break + } + // Get MetricID from ts.Item (the last 8 bytes). + v := ts.Item[len(prefix):] + if len(v) != 8 { + return fmt.Errorf("invalid key suffix size for prefix=%q; want %d bytes; got %d bytes; value=%q", 8, prefix, len(v), v) + } + metricID := encoding.UnmarshalUint64(v) + metricIDs[metricID] = struct{}{} + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error when searching for tag filter prefix %q: %s", prefix, err) + } + return nil +} + +func (is *indexSearch) updateMetricIDsMapForOrSuffixWithFilter(prefix []byte, metricIDs map[uint64]struct{}, sortedFilter []uint64, isNegative bool) error { + ts := &is.ts + kb := &is.kb + for { + // Seek for the next metricID from sortedFilter. + if len(sortedFilter) == 0 { + // All the sorteFilter entries have been searched. + break + } + nextMetricID := sortedFilter[0] + sortedFilter = sortedFilter[1:] + kb.B = append(kb.B[:0], prefix...) + kb.B = encoding.MarshalUint64(kb.B, nextMetricID) + ts.Seek(kb.B) + if !ts.NextItem() { + break + } + if !bytes.HasPrefix(ts.Item, prefix) { + break + } + // Get MetricID from ts.Item (the last 8 bytes). + v := ts.Item[len(prefix):] + if len(v) != 8 { + return fmt.Errorf("invalid key suffix size for prefix=%q; want %d bytes; got %d bytes; value=%q", 8, prefix, len(v), v) + } + metricID := encoding.UnmarshalUint64(v) + if metricID != nextMetricID { + continue + } + if isNegative { + delete(metricIDs, metricID) + continue + } + metricIDs[metricID] = struct{}{} + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error when searching for tag filter prefix %q: %s", prefix, err) + } + return nil +} + +var errFallbackToMetricNameMatch = errors.New("fall back to searchMetricIDsMapByMetricNameMatch because of too many index scan loops") + +var errMissingMetricIDsForDate = errors.New("missing metricIDs for date") + +func (is *indexSearch) getMetricIDsForTimeRange(tr TimeRange, maxMetrics int) (map[uint64]struct{}, error) { + if tr.isZero() { + return nil, errMissingMetricIDsForDate + } + minDate := tr.MinTimestamp / msecPerDay + maxDate := tr.MaxTimestamp / msecPerDay + if maxDate-minDate > 40 { + // Too much dates must be covered. Give up. + return nil, errMissingMetricIDsForDate + } + metricIDs := make(map[uint64]struct{}, maxMetrics) + for minDate <= maxDate { + if err := is.getMetricIDsForDate(uint64(minDate), metricIDs, maxMetrics); err != nil { + return nil, err + } + minDate++ + } + return metricIDs, nil +} + +func (db *indexDB) storeDateMetricID(date, metricID uint64) error { + is := db.getIndexSearch() + ok, err := is.hasDateMetricID(date, metricID) + db.putIndexSearch(is) + if err != nil { + return err + } + if ok { + // Fast path: the (date, metricID) entry already exists in the db. + return nil + } + + // Slow path: create (date, metricID) entry. + items := getIndexItems() + items.B = marshalCommonPrefix(items.B[:0], nsPrefixDateToMetricID) + items.B = encoding.MarshalUint64(items.B, date) + items.B = encoding.MarshalUint64(items.B, metricID) + items.Next() + err = db.tb.AddItems(items.Items) + putIndexItems(items) + return err +} + +func (is *indexSearch) hasDateMetricID(date, metricID uint64) (bool, error) { + ts := &is.ts + kb := &is.kb + kb.B = marshalCommonPrefix(kb.B[:0], nsPrefixDateToMetricID) + kb.B = encoding.MarshalUint64(kb.B, date) + kb.B = encoding.MarshalUint64(kb.B, metricID) + if err := ts.FirstItemWithPrefix(kb.B); err != nil { + if err == io.EOF { + return false, nil + } + return false, fmt.Errorf("error when searching for (date=%d, metricID=%d) entry: %s", date, metricID, err) + } + if string(ts.Item) != string(kb.B) { + return false, fmt.Errorf("unexpected entry for (date=%d, metricID=%d); got %q; want %q", date, metricID, ts.Item, kb.B) + } + return true, nil +} + +func (is *indexSearch) getMetricIDsForDate(date uint64, metricIDs map[uint64]struct{}, maxMetrics int) error { + ts := &is.ts + kb := &is.kb + kb.B = marshalCommonPrefix(kb.B[:0], nsPrefixDateToMetricID) + kb.B = encoding.MarshalUint64(kb.B, date) + ts.Seek(kb.B) + items := 0 + for len(metricIDs) < maxMetrics && ts.NextItem() { + if !bytes.HasPrefix(ts.Item, kb.B) { + break + } + // Extract MetricID from ts.Item (the last 8 bytes). + v := ts.Item[len(kb.B):] + if len(v) != 8 { + return fmt.Errorf("cannot extract metricID from k; want %d bytes; got %d bytes", 8, len(v)) + } + metricID := encoding.UnmarshalUint64(v) + metricIDs[metricID] = struct{}{} + items++ + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error when searching for metricIDs for date %d: %s", date, err) + } + if items == 0 { + // There are no metricIDs for the given date. + // This may be the case for old data when Date -> MetricID wasn't available. + return errMissingMetricIDsForDate + } + return nil +} + +func (is *indexSearch) getMetricIDsMapForCommonPrefix(metricIDs map[uint64]struct{}, commonPrefix []byte, maxMetrics int) error { + ts := &is.ts + ts.Seek(commonPrefix) + for len(metricIDs) < maxMetrics && ts.NextItem() { + k := ts.Item + if !bytes.HasPrefix(k, commonPrefix) { + break + } + + // Extract MetricID from k (the last 8 bytes). + k = k[len(commonPrefix):] + if len(k) < 8 { + return fmt.Errorf("cannot extract metricID from k; want at least %d bytes; got %d bytes", 8, len(k)) + } + v := k[len(k)-8:] + metricID := encoding.UnmarshalUint64(v) + metricIDs[metricID] = struct{}{} + } + if err := ts.Error(); err != nil { + return fmt.Errorf("error when searching for metricIDs by commonPrefix %q: %s", commonPrefix, err) + } + return nil +} + +// The maximum number of index scan loops per already found metric. +// Bigger number of loops is slower than searchMetricIDsMapByMetricNameMatch +// over the found metrics. +const maxIndexScanLoopsPerMetric = 32 + +func (is *indexSearch) intersectMetricIDsMapForTagFilter(tf *tagFilter, filter map[uint64]struct{}) (map[uint64]struct{}, error) { + if len(filter) == 0 { + return nil, nil + } + metricIDs := filter + if !tf.isNegative { + metricIDs = make(map[uint64]struct{}, len(filter)) + } + if len(tf.orSuffixes) > 0 { + // Fast path for orSuffixes - seek for rows for each value from orSuffixes. + if err := is.updateMetricIDsMapForOrSuffixesWithFilter(tf, metricIDs, filter); err != nil { + return nil, err + } + return metricIDs, nil + } + + // Slow path - scan for all the rows with the given prefix. + maxLoops := len(filter) * maxIndexScanLoopsPerMetric + loops := 0 + ts := &is.ts + ts.Seek(tf.prefix) + for ts.NextItem() { + loops++ + if loops > maxLoops { + return nil, errFallbackToMetricNameMatch + } + + k := ts.Item + if !bytes.HasPrefix(k, tf.prefix) { + break + } + + // Extract MetricID from k (the last 8 bytes). + k = k[len(tf.prefix):] + if len(k) < 8 { + return nil, fmt.Errorf("cannot extract metricID from k; want at least %d bytes; got %d bytes", 8, len(k)) + } + v := k[len(k)-8:] + k = k[:len(k)-8] + + ok, err := tf.matchSuffix(k) + if err != nil { + return nil, fmt.Errorf("error when matching %s: %s", tf, err) + } + if !ok { + continue + } + metricID := encoding.UnmarshalUint64(v) + if tf.isNegative { + // filter must be equal to metricIDs + delete(metricIDs, metricID) + continue + } + if _, ok := filter[metricID]; ok { + metricIDs[metricID] = struct{}{} + } + } + if err := ts.Error(); err != nil { + return nil, fmt.Errorf("error searching %q: %s", tf.prefix, err) + } + return metricIDs, nil +} + +var kbPool bytesutil.ByteBufferPool + +// Returns local unique MetricID. +func getUniqueUint64() uint64 { + return atomic.AddUint64(&uniqueUint64, 1) +} + +// This number mustn't go backwards on restarts, otherwise metricID +// collisions are possible. So don't change time on the server +// between VictoriaMetrics restarts. +var uniqueUint64 = uint64(time.Now().UnixNano()) + +func marshalCommonPrefix(dst []byte, nsPrefix byte) []byte { + dst = append(dst, nsPrefix) + return dst +} + +func getSortedMetricIDs(m map[uint64]struct{}) []uint64 { + a := make([]uint64, len(m)) + i := 0 + for metricID := range m { + a[i] = metricID + i++ + } + sort.Slice(a, func(i, j int) bool { return a[i] < a[j] }) + return a +} diff --git a/lib/storage/index_db_test.go b/lib/storage/index_db_test.go new file mode 100644 index 000000000..071859119 --- /dev/null +++ b/lib/storage/index_db_test.go @@ -0,0 +1,899 @@ +package storage + +import ( + "bytes" + "fmt" + "io" + "math/rand" + "os" + "reflect" + "testing" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/fastcache" +) + +func TestMarshalUnmarshalTSIDs(t *testing.T) { + f := func(tsids []TSID) { + t.Helper() + value := marshalTSIDs(nil, tsids) + tsidsGot, err := unmarshalTSIDs(nil, value) + if err != nil { + t.Fatalf("cannot unmarshal tsids: %s", err) + } + if len(tsids) == 0 && len(tsidsGot) != 0 || len(tsids) > 0 && !reflect.DeepEqual(tsids, tsidsGot) { + t.Fatalf("unexpected tsids unmarshaled\ngot\n%+v\nwant\n%+v", tsidsGot, tsids) + } + + // Try marshlaing with prefix + prefix := []byte("prefix") + valueExt := marshalTSIDs(prefix, tsids) + if !bytes.Equal(valueExt[:len(prefix)], prefix) { + t.Fatalf("unexpected prefix after marshaling;\ngot\n%X\nwant\n%X", valueExt[:len(prefix)], prefix) + } + if !bytes.Equal(valueExt[len(prefix):], value) { + t.Fatalf("unexpected prefixed marshaled value;\ngot\n%X\nwant\n%X", valueExt[len(prefix):], value) + } + + // Try unmarshaling with prefix + tsidPrefix := []TSID{{MetricID: 123}, {JobID: 456}} + tsidsGot, err = unmarshalTSIDs(tsidPrefix, value) + if err != nil { + t.Fatalf("cannot unmarshal prefixed tsids: %s", err) + } + if !reflect.DeepEqual(tsidsGot[:len(tsidPrefix)], tsidPrefix) { + t.Fatalf("unexpected tsid prefix\ngot\n%+v\nwant\n%+v", tsidsGot[:len(tsidPrefix)], tsidPrefix) + } + if len(tsids) == 0 && len(tsidsGot) != len(tsidPrefix) || len(tsids) > 0 && !reflect.DeepEqual(tsidsGot[len(tsidPrefix):], tsids) { + t.Fatalf("unexpected prefixed tsids unmarshaled\ngot\n%+v\nwant\n%+v", tsidsGot[len(tsidPrefix):], tsids) + } + } + + f(nil) + f([]TSID{{MetricID: 123}}) + f([]TSID{{JobID: 34}, {MetricID: 2343}, {InstanceID: 243321}}) +} + +func TestIndexDBOpenClose(t *testing.T) { + metricIDCache := fastcache.New(1234) + metricNameCache := fastcache.New(1234) + defer metricIDCache.Reset() + defer metricNameCache.Reset() + for i := 0; i < 5; i++ { + db, err := openIndexDB("test-index-db", metricIDCache, metricNameCache) + if err != nil { + t.Fatalf("cannot open indexDB: %s", err) + } + db.MustClose() + } + if err := os.RemoveAll("test-index-db"); err != nil { + t.Fatalf("cannot remove indexDB: %s", err) + } +} + +func TestIndexDB(t *testing.T) { + const accountsCount = 3 + const projectsCount = 2 + const metricGroups = 10 + + t.Run("serial", func(t *testing.T) { + metricIDCache := fastcache.New(1234) + metricNameCache := fastcache.New(1234) + defer metricIDCache.Reset() + defer metricNameCache.Reset() + dbName := "test-index-db-serial" + db, err := openIndexDB(dbName, metricIDCache, metricNameCache) + if err != nil { + t.Fatalf("cannot open indexDB: %s", err) + } + defer func() { + db.MustClose() + if err := os.RemoveAll(dbName); err != nil { + t.Fatalf("cannot remove indexDB: %s", err) + } + }() + + if err := testIndexDBBigMetricName(db); err != nil { + t.Fatalf("unexpected error: %s", err) + } + mns, tsids, err := testIndexDBGetOrCreateTSIDByName(db, accountsCount, projectsCount, metricGroups) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if err := testIndexDBBigMetricName(db); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if err := testIndexDBCheckTSIDByName(db, mns, tsids, false); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if err := testIndexDBBigMetricName(db); err != nil { + t.Fatalf("unexpected error: %s", err) + } + + // Re-open the db and verify it works as expected. + db.MustClose() + db, err = openIndexDB(dbName, metricIDCache, metricNameCache) + if err != nil { + t.Fatalf("cannot open indexDB: %s", err) + } + if err := testIndexDBBigMetricName(db); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if err := testIndexDBCheckTSIDByName(db, mns, tsids, false); err != nil { + t.Fatalf("unexpected error: %s", err) + } + if err := testIndexDBBigMetricName(db); err != nil { + t.Fatalf("unexpected error: %s", err) + } + }) + + t.Run("concurrent", func(t *testing.T) { + metricIDCache := fastcache.New(1234) + metricNameCache := fastcache.New(1234) + defer metricIDCache.Reset() + defer metricNameCache.Reset() + dbName := "test-index-db-concurrent" + db, err := openIndexDB(dbName, metricIDCache, metricNameCache) + if err != nil { + t.Fatalf("cannot open indexDB: %s", err) + } + defer func() { + db.MustClose() + if err := os.RemoveAll(dbName); err != nil { + t.Fatalf("cannot remove indexDB: %s", err) + } + }() + + ch := make(chan error, 3) + for i := 0; i < cap(ch); i++ { + go func() { + if err := testIndexDBBigMetricName(db); err != nil { + ch <- err + return + } + mns, tsid, err := testIndexDBGetOrCreateTSIDByName(db, accountsCount, projectsCount, metricGroups) + if err != nil { + ch <- err + return + } + if err := testIndexDBBigMetricName(db); err != nil { + ch <- err + return + } + if err := testIndexDBCheckTSIDByName(db, mns, tsid, true); err != nil { + ch <- err + return + } + if err := testIndexDBBigMetricName(db); err != nil { + ch <- err + return + } + ch <- nil + }() + } + var errors []error + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + errors = append(errors, fmt.Errorf("unexpected error: %s", err)) + } + case <-time.After(30 * time.Second): + t.Fatalf("timeout") + } + } + if len(errors) > 0 { + t.Fatal(errors[0]) + } + }) +} + +func testIndexDBBigMetricName(db *indexDB) error { + var bigBytes []byte + for i := 0; i < 128*1000; i++ { + bigBytes = append(bigBytes, byte(i)) + } + var mn MetricName + var tsid TSID + + is := db.getIndexSearch() + defer db.putIndexSearch(is) + + // Try creating too big metric group + mn.Reset() + mn.MetricGroup = append(mn.MetricGroup[:0], bigBytes...) + mn.sortTags() + metricName := mn.Marshal(nil) + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err == nil { + return fmt.Errorf("expecting non-nil error on an attempt to insert metric with too big MetricGroup") + } + + // Try creating too big tag key + mn.Reset() + mn.MetricGroup = append(mn.MetricGroup[:0], "xxx"...) + mn.Tags = []Tag{{ + Key: append([]byte(nil), bigBytes...), + Value: []byte("foobar"), + }} + mn.sortTags() + metricName = mn.Marshal(nil) + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err == nil { + return fmt.Errorf("expecting non-nil error on an attempt to insert metric with too big tag key") + } + + // Try creating too big tag value + mn.Reset() + mn.MetricGroup = append(mn.MetricGroup[:0], "xxx"...) + mn.Tags = []Tag{{ + Key: []byte("foobar"), + Value: append([]byte(nil), bigBytes...), + }} + mn.sortTags() + metricName = mn.Marshal(nil) + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err == nil { + return fmt.Errorf("expecting non-nil error on an attempt to insert metric with too big tag value") + } + + // Try creating metric name with too many tags + mn.Reset() + mn.MetricGroup = append(mn.MetricGroup[:0], "xxx"...) + for i := 0; i < 60000; i++ { + mn.Tags = append(mn.Tags, Tag{ + Key: []byte(fmt.Sprintf("foobar %d", i)), + Value: []byte(fmt.Sprintf("sdfjdslkfj %d", i)), + }) + } + mn.sortTags() + metricName = mn.Marshal(nil) + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err == nil { + return fmt.Errorf("expecting non-nil error on an attempt to insert metric with too many tags") + } + + return nil +} + +func testIndexDBGetOrCreateTSIDByName(db *indexDB, accountsCount, projectsCount, metricGroups int) ([]MetricName, []TSID, error) { + // Create tsids. + var mns []MetricName + var tsids []TSID + + is := db.getIndexSearch() + defer db.putIndexSearch(is) + + for i := 0; i < 4e2+1; i++ { + var mn MetricName + + // Init MetricGroup. + mn.MetricGroup = []byte(fmt.Sprintf("metricGroup_%d\x00\x01\x02", i%metricGroups)) + + // Init other tags. + tagsCount := rand.Intn(10) + 1 + for j := 0; j < tagsCount; j++ { + key := fmt.Sprintf("key\x01\x02\x00_%d_%d", i, j) + value := fmt.Sprintf("val\x01_%d\x00_%d\x02", i, j) + mn.AddTag(key, value) + } + mn.sortTags() + metricName := mn.Marshal(nil) + + // Create tsid for the metricName. + var tsid TSID + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err != nil { + return nil, nil, fmt.Errorf("unexpected error when creating tsid for mn:\n%s: %s", &mn, err) + } + + mns = append(mns, mn) + tsids = append(tsids, tsid) + } + + db.tb.DebugFlush() + + return mns, tsids, nil +} + +func testIndexDBCheckTSIDByName(db *indexDB, mns []MetricName, tsids []TSID, isConcurrent bool) error { + hasValue := func(tvs []string, v []byte) bool { + for _, tv := range tvs { + if string(v) == tv { + return true + } + } + return false + } + + timeseriesCounters := make(map[uint64]bool) + var tsidCopy TSID + var metricNameCopy []byte + allKeys := make(map[string]bool) + for i := range mns { + mn := &mns[i] + tsid := &tsids[i] + + tc := timeseriesCounters + tc[tsid.MetricID] = true + + mn.sortTags() + metricName := mn.Marshal(nil) + + if err := db.getTSIDByNameNoCreate(&tsidCopy, metricName); err != nil { + return fmt.Errorf("cannot obtain tsid #%d for mn %s: %s", i, mn, err) + } + if isConcurrent { + // Copy tsid.MetricID, since multiple TSIDs may match + // the same mn in concurrent mode. + tsidCopy.MetricID = tsid.MetricID + } + if !reflect.DeepEqual(tsid, &tsidCopy) { + return fmt.Errorf("unexpected tsid for mn:\n%s\ngot\n%+v\nwant\n%+v", mn, &tsidCopy, tsid) + } + + // Search for metric name for the given metricID. + var err error + metricNameCopy, err = db.searchMetricName(metricNameCopy[:0], tsidCopy.MetricID) + if err != nil { + return fmt.Errorf("error in searchMetricName: %s", err) + } + if !bytes.Equal(metricName, metricNameCopy) { + return fmt.Errorf("unexpected mn for metricID=%d;\ngot\n%q\nwant\n%q", tsidCopy.MetricID, metricNameCopy, metricName) + } + + // Try searching metric name for non-existent MetricID. + buf, err := db.searchMetricName(nil, 1) + if err != io.EOF { + return fmt.Errorf("expecting io.EOF error when searching for non-existing metricID; got %v", err) + } + if len(buf) > 0 { + return fmt.Errorf("expecting empty buf when searching for non-existent metricID; got %X", buf) + } + + // Test SearchTagValues + tvs, err := db.SearchTagValues(nil, 1e5) + if err != nil { + return fmt.Errorf("error in SearchTagValues for __name__: %s", err) + } + if !hasValue(tvs, mn.MetricGroup) { + return fmt.Errorf("SearchTagValues couldn't find %q; found %q", mn.MetricGroup, tvs) + } + for i := range mn.Tags { + tag := &mn.Tags[i] + tvs, err := db.SearchTagValues(tag.Key, 1e5) + if err != nil { + return fmt.Errorf("error in SearchTagValues for __name__: %s", err) + } + if !hasValue(tvs, tag.Value) { + return fmt.Errorf("SearchTagValues couldn't find %q=%q; found %q", tag.Key, tag.Value, tvs) + } + allKeys[string(tag.Key)] = true + } + } + + // Test SearchTagKeys + tks, err := db.SearchTagKeys(1e5) + if err != nil { + return fmt.Errorf("error in SearchTagKeys: %s", err) + } + if !hasValue(tks, nil) { + return fmt.Errorf("cannot find __name__ in %q", tks) + } + for key := range allKeys { + if !hasValue(tks, []byte(key)) { + return fmt.Errorf("cannot find %q in %q", key, tks) + } + } + + // Try tag filters. + for i := range mns { + mn := &mns[i] + tsid := &tsids[i] + + // Search without regexps. + tfs := NewTagFilters() + if err := tfs.Add(nil, mn.MetricGroup, false, false); err != nil { + return fmt.Errorf("cannot create tag filter for MetricGroup: %s", err) + } + for j := 0; j < len(mn.Tags); j++ { + t := &mn.Tags[j] + if err := tfs.Add(t.Key, t.Value, false, false); err != nil { + return fmt.Errorf("cannot create tag filter for tag: %s", err) + } + } + if err := tfs.Add(nil, []byte("foobar"), true, false); err != nil { + return fmt.Errorf("cannot add negative filter: %s", err) + } + if err := tfs.Add(nil, nil, true, false); err != nil { + return fmt.Errorf("cannot add no-op negative filter: %s", err) + } + tsidsFound, err := db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search by exact tag filter: %s", err) + } + if !testHasTSID(tsidsFound, tsid) { + return fmt.Errorf("tsids is missing in exact tsidsFound\ntsid=%+v\ntsidsFound=%+v\ntfs=%s\nmn=%s", tsid, tsidsFound, tfs, mn) + } + + // Verify tag cache. + tsidsCached, err := db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search by exact tag filter: %s", err) + } + if !reflect.DeepEqual(tsidsCached, tsidsFound) { + return fmt.Errorf("unexpected tsids returned; got\n%+v; want\n%+v", tsidsCached, tsidsFound) + } + + // Add negative filter for zeroing search results. + if err := tfs.Add(nil, mn.MetricGroup, true, false); err != nil { + return fmt.Errorf("cannot add negative filter for zeroing search results: %s", err) + } + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search by exact tag filter with full negative: %s", err) + } + if testHasTSID(tsidsFound, tsid) { + return fmt.Errorf("unexpected tsid found for exact negative filter\ntsid=%+v\ntsidsFound=%+v\ntfs=%s\nmn=%s", tsid, tsidsFound, tfs, mn) + } + + // Search with regexps. + tfs.Reset() + if err := tfs.Add(nil, mn.MetricGroup, false, true); err != nil { + return fmt.Errorf("cannot create regexp tag filter for MetricGroup: %s", err) + } + for j := 0; j < len(mn.Tags); j++ { + t := &mn.Tags[j] + if err := tfs.Add(t.Key, append(t.Value, "|foo*."...), false, true); err != nil { + return fmt.Errorf("cannot create regexp tag filter for tag: %s", err) + } + if err := tfs.Add(t.Key, append(t.Value, "|aaa|foo|bar"...), false, true); err != nil { + return fmt.Errorf("cannot create regexp tag filter for tag: %s", err) + } + } + if err := tfs.Add(nil, []byte("^foobar$"), true, true); err != nil { + return fmt.Errorf("cannot add negative filter with regexp: %s", err) + } + if err := tfs.Add(nil, nil, true, true); err != nil { + return fmt.Errorf("cannot add no-op negative filter with regexp: %s", err) + } + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search by regexp tag filter: %s", err) + } + if !testHasTSID(tsidsFound, tsid) { + return fmt.Errorf("tsids is missing in regexp tsidsFound\ntsid=%+v\ntsidsFound=%+v\ntfs=%s\nmn=%s", tsid, tsidsFound, tfs, mn) + } + if err := tfs.Add(nil, mn.MetricGroup, true, true); err != nil { + return fmt.Errorf("cannot add negative filter for zeroing search results: %s", err) + } + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search by regexp tag filter with full negative: %s", err) + } + if testHasTSID(tsidsFound, tsid) { + return fmt.Errorf("unexpected tsid found for regexp negative filter\ntsid=%+v\ntsidsFound=%+v\ntfs=%s\nmn=%s", tsid, tsidsFound, tfs, mn) + } + + // Search with filter matching zero results. + tfs.Reset() + if err := tfs.Add([]byte("non-existing-key"), []byte("foobar"), false, false); err != nil { + return fmt.Errorf("cannot add non-existing key: %s", err) + } + if err := tfs.Add(nil, mn.MetricGroup, false, true); err != nil { + return fmt.Errorf("cannot create tag filter for MetricGroup matching zero results: %s", err) + } + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search by non-existing tag filter: %s", err) + } + if len(tsidsFound) > 0 { + return fmt.Errorf("non-zero tsidsFound for non-existing tag filter: %+v", tsidsFound) + } + + if isConcurrent { + // Skip empty filter search in concurrent mode, since it looks like + // it has a lag preventing from correct work. + continue + } + + // Search with empty filter. It should match all the results. + tfs.Reset() + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search for common prefix: %s", err) + } + if !testHasTSID(tsidsFound, tsid) { + return fmt.Errorf("tsids is missing in common prefix\ntsid=%+v\ntsidsFound=%+v\ntfs=%s\nmn=%s", tsid, tsidsFound, tfs, mn) + } + + // Search with empty metricGroup. It should match zero results. + tfs.Reset() + if err := tfs.Add(nil, nil, false, false); err != nil { + return fmt.Errorf("cannot create tag filter for empty metricGroup: %s", err) + } + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search for empty metricGroup: %s", err) + } + if len(tsidsFound) != 0 { + return fmt.Errorf("unexpected non-empty tsids found for empty metricGroup: %v", tsidsFound) + } + + // Search with multiple tfss + tfs1 := NewTagFilters() + if err := tfs1.Add(nil, nil, false, false); err != nil { + return fmt.Errorf("cannot create tag filter for empty metricGroup: %s", err) + } + tfs2 := NewTagFilters() + if err := tfs2.Add(nil, mn.MetricGroup, false, false); err != nil { + return fmt.Errorf("cannot create tag filter for MetricGroup: %s", err) + } + tsidsFound, err = db.searchTSIDs([]*TagFilters{tfs1, tfs2}, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search for empty metricGroup: %s", err) + } + if !testHasTSID(tsidsFound, tsid) { + return fmt.Errorf("tsids is missing when searching for multiple tfss \ntsid=%+v\ntsidsFound=%+v\ntfs=%s\nmn=%s", tsid, tsidsFound, tfs, mn) + } + + // Verify empty tfss + tsidsFound, err = db.searchTSIDs(nil, TimeRange{}, 1e5) + if err != nil { + return fmt.Errorf("cannot search for nil tfss: %s", err) + } + if len(tsidsFound) != 0 { + return fmt.Errorf("unexpected non-empty tsids fround for nil tfss; found %d tsids", len(tsidsFound)) + } + } + + return nil +} + +func testHasTSID(tsids []TSID, tsid *TSID) bool { + for i := range tsids { + if tsids[i] == *tsid { + return true + } + } + return false +} + +func TestMatchTagFilters(t *testing.T) { + var mn MetricName + mn.MetricGroup = append(mn.MetricGroup, "foobar_metric"...) + for i := 0; i < 5; i++ { + key := fmt.Sprintf("key %d", i) + value := fmt.Sprintf("value %d", i) + mn.AddTag(key, value) + } + var bb bytesutil.ByteBuffer + + var tfs TagFilters + tfs.Reset() + if err := tfs.Add(nil, []byte("foobar_metric"), false, false); err != nil { + t.Fatalf("cannot add filter: %s", err) + } + ok, err := matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("should match") + } + + // Empty tag filters should match. + tfs.Reset() + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("empty tag filters should match") + } + + // Negative match by MetricGroup + tfs.Reset() + if err := tfs.Add(nil, []byte("foobar"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add(nil, []byte("obar.+"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add(nil, []byte("foobar_metric"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add(nil, []byte("foob.+metric"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + + // Positive match by MetricGroup + tfs.Reset() + if err := tfs.Add(nil, []byte("foobar_metric"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + tfs.Reset() + if err := tfs.Add(nil, []byte("foobar.+etric"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + tfs.Reset() + if err := tfs.Add(nil, []byte("obar_metric"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + tfs.Reset() + if err := tfs.Add(nil, []byte("ob.+metric"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + + // Negative match by non-existing tag + tfs.Reset() + if err := tfs.Add([]byte("non-existing-tag"), []byte("foobar"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add([]byte("non-existing-tag"), []byte("obar.+"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add([]byte("non-existing-tag"), []byte("foobar_metric"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add([]byte("non-existing-tag"), []byte("foob.+metric"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + + // Negative match by existing tag + tfs.Reset() + if err := tfs.Add([]byte("key 0"), []byte("foobar"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add([]byte("key 1"), []byte("obar.+"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add([]byte("key 2"), []byte("value 2"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + tfs.Reset() + if err := tfs.Add([]byte("key 3"), []byte("v.+lue 3"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } + + // Positive match by existing tag + tfs.Reset() + if err := tfs.Add([]byte("key 0"), []byte("value 0"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + tfs.Reset() + if err := tfs.Add([]byte("key 1"), []byte(".+lue 1"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + tfs.Reset() + if err := tfs.Add([]byte("key 2"), []byte("value 3"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + tfs.Reset() + if err := tfs.Add([]byte("key 3"), []byte("v.+lue 2"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + + // Positive match by multiple tags and MetricGroup + tfs.Reset() + if err := tfs.Add([]byte("key 0"), []byte("value 0"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + if err := tfs.Add([]byte("key 2"), []byte("value [0-9]"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + if err := tfs.Add([]byte("key 3"), []byte("value 23"), true, false); err != nil { + t.Fatalf("cannt add no regexp, negative filter: %s", err) + } + if err := tfs.Add([]byte("key 2"), []byte("lue.+43"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("foobar_metric"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("foo.+metric"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("sdfdsf"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("o.+metr"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if !ok { + t.Fatalf("Should match") + } + + // Negative match by multiple tags and MetricGroup + tfs.Reset() + // Positive matches + if err := tfs.Add([]byte("key 0"), []byte("value 0"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + if err := tfs.Add([]byte("key 2"), []byte("value [0-9]"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + if err := tfs.Add([]byte("key 3"), []byte("value 23"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + // Negative matches + if err := tfs.Add([]byte("key 2"), []byte("v.+2"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("obar_metric"), false, false); err != nil { + t.Fatalf("cannot add no regexp, no negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("oo.+metric"), false, true); err != nil { + t.Fatalf("cannot add regexp, no negative filter: %s", err) + } + // Positive matches + if err := tfs.Add(nil, []byte("sdfdsf"), true, false); err != nil { + t.Fatalf("cannot add no regexp, negative filter: %s", err) + } + if err := tfs.Add(nil, []byte("o.+metr"), true, true); err != nil { + t.Fatalf("cannot add regexp, negative filter: %s", err) + } + ok, err = matchTagFilters(&mn, toTFPointers(tfs.tfs), &bb) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok { + t.Fatalf("Shouldn't match") + } +} + +func toTFPointers(tfs []tagFilter) []*tagFilter { + tfps := make([]*tagFilter, len(tfs)) + for i := range tfs { + tfps[i] = &tfs[i] + } + return tfps +} diff --git a/lib/storage/index_db_timing_test.go b/lib/storage/index_db_timing_test.go new file mode 100644 index 000000000..e830a3777 --- /dev/null +++ b/lib/storage/index_db_timing_test.go @@ -0,0 +1,208 @@ +package storage + +import ( + "fmt" + "os" + "strconv" + "testing" + + "github.com/VictoriaMetrics/fastcache" +) + +func BenchmarkIndexDBAddTSIDs(b *testing.B) { + const recordsPerLoop = 1e3 + + metricIDCache := fastcache.New(1234) + metricNameCache := fastcache.New(1234) + defer metricIDCache.Reset() + defer metricNameCache.Reset() + const dbName = "bench-index-db-add-tsids" + db, err := openIndexDB(dbName, metricIDCache, metricNameCache) + if err != nil { + b.Fatalf("cannot open indexDB: %s", err) + } + defer func() { + db.MustClose() + if err := os.RemoveAll(dbName); err != nil { + b.Fatalf("cannot remove indexDB: %s", err) + } + }() + + b.ReportAllocs() + b.SetBytes(recordsPerLoop) + b.ResetTimer() + b.RunParallel(func(pb *testing.PB) { + var mn MetricName + var tsid TSID + + // The most common tags. + mn.Tags = []Tag{ + { + Key: []byte("job"), + }, + { + Key: []byte("instance"), + }, + } + + startOffset := 0 + for pb.Next() { + benchmarkIndexDBAddTSIDs(db, &tsid, &mn, startOffset, recordsPerLoop) + startOffset += recordsPerLoop + } + }) + b.StopTimer() +} + +func benchmarkIndexDBAddTSIDs(db *indexDB, tsid *TSID, mn *MetricName, startOffset, recordsPerLoop int) { + var metricName []byte + is := db.getIndexSearch() + defer db.putIndexSearch(is) + for i := 0; i < recordsPerLoop; i++ { + mn.MetricGroup = strconv.AppendUint(mn.MetricGroup[:0], uint64(i+startOffset), 10) + for j := range mn.Tags { + mn.Tags[j].Value = strconv.AppendUint(mn.Tags[j].Value[:0], uint64(i*j), 16) + } + mn.sortTags() + metricName = mn.Marshal(metricName[:0]) + if err := is.GetOrCreateTSIDByName(tsid, metricName); err != nil { + panic(fmt.Errorf("cannot insert record: %s", err)) + } + } +} + +func BenchmarkIndexDBSearchTSIDs(b *testing.B) { + metricIDCache := fastcache.New(1234) + metricNameCache := fastcache.New(1234) + defer metricIDCache.Reset() + defer metricNameCache.Reset() + const dbName = "bench-index-db-search-tsids" + db, err := openIndexDB(dbName, metricIDCache, metricNameCache) + if err != nil { + b.Fatalf("cannot open indexDB: %s", err) + } + defer func() { + db.MustClose() + if err := os.RemoveAll(dbName); err != nil { + b.Fatalf("cannot remove indexDB: %s", err) + } + }() + + const accountsCount = 111 + const projectsCount = 33333 + const recordsCount = 1e5 + + // Fill the db with recordsCount records. + var mn MetricName + mn.MetricGroup = []byte("rps") + for i := 0; i < 2; i++ { + key := fmt.Sprintf("key_%d", i) + value := fmt.Sprintf("value_%d", i) + mn.AddTag(key, value) + } + var tsid TSID + var metricName []byte + is := db.getIndexSearch() + defer db.putIndexSearch(is) + for i := 0; i < recordsCount; i++ { + mn.sortTags() + metricName = mn.Marshal(metricName[:0]) + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err != nil { + b.Fatalf("cannot insert record: %s", err) + } + } + + b.SetBytes(1) + b.ReportAllocs() + b.ResetTimer() + b.RunParallel(func(pb *testing.PB) { + tags := []Tag{ + {[]byte("key_0"), []byte("value_0")}, + {[]byte("key_1"), []byte("value_1")}, + } + var tfs TagFilters + tfss := []*TagFilters{&tfs} + i := 0 + for pb.Next() { + tfs.Reset() + for j := range tags { + if err := tfs.Add(tags[j].Key, tags[j].Value, false, false); err != nil { + panic(fmt.Errorf("BUG: unexpected error: %s", err)) + } + } + tsids, err := db.searchTSIDs(tfss, TimeRange{}, 1e5) + if err != nil { + panic(fmt.Errorf("unexpected error in search for tfs=%s: %s", &tfs, err)) + } + if len(tsids) == 0 && i < recordsCount { + panic(fmt.Errorf("zero tsids found for tfs=%s", &tfs)) + } + i++ + } + }) +} + +func BenchmarkIndexDBGetTSIDs(b *testing.B) { + metricIDCache := fastcache.New(1234) + metricNameCache := fastcache.New(1234) + defer metricIDCache.Reset() + defer metricNameCache.Reset() + const dbName = "bench-index-db-get-tsids" + db, err := openIndexDB(dbName, metricIDCache, metricNameCache) + if err != nil { + b.Fatalf("cannot open indexDB: %s", err) + } + defer func() { + db.MustClose() + if err := os.RemoveAll(dbName); err != nil { + b.Fatalf("cannot remove indexDB: %s", err) + } + }() + + const recordsPerLoop = 1000 + const accountsCount = 111 + const projectsCount = 33333 + const recordsCount = 1e5 + + // Fill the db with recordsCount records. + var mn MetricName + mn.MetricGroup = []byte("rps") + for i := 0; i < 2; i++ { + key := fmt.Sprintf("key_%d", i) + value := fmt.Sprintf("value_%d", i) + mn.AddTag(key, value) + } + var tsid TSID + var metricName []byte + + is := db.getIndexSearch() + defer db.putIndexSearch(is) + for i := 0; i < recordsCount; i++ { + mn.sortTags() + metricName = mn.Marshal(metricName[:0]) + if err := is.GetOrCreateTSIDByName(&tsid, metricName); err != nil { + b.Fatalf("cannot insert record: %s", err) + } + } + + b.SetBytes(recordsPerLoop) + b.ReportAllocs() + b.ResetTimer() + b.RunParallel(func(pb *testing.PB) { + var tsidLocal TSID + var metricNameLocal []byte + mnLocal := mn + is := db.getIndexSearch() + defer db.putIndexSearch(is) + for pb.Next() { + for i := 0; i < recordsPerLoop; i++ { + mnLocal.sortTags() + metricNameLocal = mnLocal.Marshal(metricNameLocal[:0]) + if err := is.GetOrCreateTSIDByName(&tsidLocal, metricNameLocal); err != nil { + panic(fmt.Errorf("cannot obtain tsid: %s", err)) + } + } + } + }) + b.StopTimer() +} diff --git a/lib/storage/inmemory_part.go b/lib/storage/inmemory_part.go new file mode 100644 index 000000000..2fb27f56c --- /dev/null +++ b/lib/storage/inmemory_part.go @@ -0,0 +1,70 @@ +package storage + +import ( + "sync" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// inmemoryPart represents in-memory partition. +type inmemoryPart struct { + ph partHeader + + timestampsData bytesutil.ByteBuffer + valuesData bytesutil.ByteBuffer + indexData bytesutil.ByteBuffer + metaindexData bytesutil.ByteBuffer + + creationTime time.Time +} + +// Reset resets mp. +func (mp *inmemoryPart) Reset() { + mp.ph.Reset() + + mp.timestampsData.Reset() + mp.valuesData.Reset() + mp.indexData.Reset() + mp.metaindexData.Reset() + + mp.creationTime = time.Time{} +} + +// InitFromRows initializes mp from the given rows. +func (mp *inmemoryPart) InitFromRows(rows []rawRow) { + if len(rows) == 0 { + logger.Panicf("BUG: Inmemory.InitFromRows must accept at least one row") + } + + mp.Reset() + rrm := getRawRowsMarshaler() + rrm.marshalToInmemoryPart(mp, rows) + putRawRowsMarshaler(rrm) + mp.creationTime = time.Now() +} + +// NewPart creates new part from mp. +// +// It is safe calling NewPart multiple times. +// It is unsafe re-using mp while the returned part is in use. +func (mp *inmemoryPart) NewPart() (*part, error) { + ph := mp.ph + return newPart(&ph, "", mp.metaindexData.NewReader(), &mp.timestampsData, &mp.valuesData, &mp.indexData) +} + +func getInmemoryPart() *inmemoryPart { + v := mpPool.Get() + if v == nil { + return &inmemoryPart{} + } + return v.(*inmemoryPart) +} + +func putInmemoryPart(mp *inmemoryPart) { + mp.Reset() + mpPool.Put(mp) +} + +var mpPool sync.Pool diff --git a/lib/storage/inmemory_part_test.go b/lib/storage/inmemory_part_test.go new file mode 100644 index 000000000..d2f8be8e7 --- /dev/null +++ b/lib/storage/inmemory_part_test.go @@ -0,0 +1,137 @@ +package storage + +import ( + "math/rand" + "testing" +) + +const defaultPrecisionBits = 4 + +func TestInmemoryPartInitFromRows(t *testing.T) { + testInmemoryPartInitFromRows(t, []rawRow{ + { + TSID: TSID{ + MetricID: 234, + }, + Timestamp: 123, + Value: 456.789, + PrecisionBits: defaultPrecisionBits, + }, + }, 1) + + var rows []rawRow + var r rawRow + + // Test a single tsid. + rows = rows[:0] + initTestTSID(&r.TSID) + r.PrecisionBits = defaultPrecisionBits + for i := uint64(0); i < 1e4; i++ { + r.Timestamp = int64(rand.NormFloat64() * 1e7) + r.Value = rand.NormFloat64() * 100 + + rows = append(rows, r) + } + testInmemoryPartInitFromRows(t, rows, 2) + + // Test distinct tsids. + rows = rows[:0] + for i := 0; i < 1e4; i++ { + initTestTSID(&r.TSID) + r.TSID.MetricID = uint64(i) + r.Timestamp = int64(rand.NormFloat64() * 1e7) + r.Value = rand.NormFloat64() * 100 + r.PrecisionBits = uint8(i%64) + 1 + + rows = append(rows, r) + } + testInmemoryPartInitFromRows(t, rows, 1e4) +} + +func testInmemoryPartInitFromRows(t *testing.T, rows []rawRow, blocksCount int) { + t.Helper() + + minTimestamp := int64((1 << 63) - 1) + maxTimestamp := int64(-1 << 63) + for i := range rows { + r := &rows[i] + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + + var mp inmemoryPart + mp.InitFromRows(rows) + + if int(mp.ph.RowsCount) != len(rows) { + t.Fatalf("unexpected rows count; got %d; expecting %d", mp.ph.RowsCount, len(rows)) + } + if mp.ph.MinTimestamp != minTimestamp { + t.Fatalf("unexpected minTimestamp; got %d; expecting %d", mp.ph.MinTimestamp, minTimestamp) + } + if mp.ph.MaxTimestamp != maxTimestamp { + t.Fatalf("unexpected maxTimestamp; got %d; expecting %d", mp.ph.MaxTimestamp, maxTimestamp) + } + + var bsr blockStreamReader + bsr.InitFromInmemoryPart(&mp) + + rowsCount := 0 + blockNum := 0 + prevTSID := TSID{} + for bsr.NextBlock() { + bh := &bsr.Block.bh + + if bh.TSID.Less(&prevTSID) { + t.Fatalf("TSID=%+v for the current block cannot be smaller than the TSID=%+v for the previous block", &bh.TSID, &prevTSID) + } + prevTSID = bh.TSID + + if bh.MinTimestamp < minTimestamp { + t.Fatalf("unexpected MinTimestamp in the block %+v; got %d; cannot be smaller than %d", &bsr.Block, bh.MinTimestamp, minTimestamp) + } + if bh.MaxTimestamp > maxTimestamp { + t.Fatalf("unexpected MaxTimestamp in the block %+v; got %d; cannot be higher than %d", &bsr.Block, bh.MaxTimestamp, maxTimestamp) + } + + if err := bsr.Block.UnmarshalData(); err != nil { + t.Fatalf("cannot unmarshal block #%d: %s", blockNum, err) + } + + prevTimestamp := bh.MinTimestamp + blockRowsCount := 0 + for bsr.Block.nextRow() { + timestamp := bsr.Block.timestamps[bsr.Block.nextIdx-1] + if timestamp < bh.MinTimestamp { + t.Fatalf("unexpected Timestamp in the row; got %d; cannot be smaller than %d", timestamp, bh.MinTimestamp) + } + if timestamp > bsr.Block.bh.MaxTimestamp { + t.Fatalf("unexpected Timestamp in the row; got %d; cannot be higher than %d", timestamp, bh.MaxTimestamp) + } + if timestamp < prevTimestamp { + t.Fatalf("too small Timestamp in the row; got %d; cannot be smaller than the timestamp from the previous row: %d", + timestamp, prevTimestamp) + } + prevTimestamp = timestamp + blockRowsCount++ + } + if blockRowsCount != int(bh.RowsCount) { + t.Fatalf("unexpected number of rows in the block %v; got %d; want %d", &bsr.Block, blockRowsCount, bh.RowsCount) + } + + rowsCount += blockRowsCount + blockNum++ + } + if err := bsr.Error(); err != nil { + t.Fatalf("unexpected error after reading %d blocks from block stream: %s", blockNum, err) + } + if blockNum != blocksCount { + t.Fatalf("unexpected number of blocks read; got %d; want %d", blockNum, blocksCount) + } + if rowsCount != len(rows) { + t.Fatalf("unexpected number of rows; got %d; want %d", rowsCount, len(rows)) + } +} diff --git a/lib/storage/inmemory_part_timing_test.go b/lib/storage/inmemory_part_timing_test.go new file mode 100644 index 000000000..1d0477db9 --- /dev/null +++ b/lib/storage/inmemory_part_timing_test.go @@ -0,0 +1,52 @@ +package storage + +import ( + "math/rand" + "testing" +) + +func BenchmarkInmemoryPartInitFromRowsWorstCase(b *testing.B) { + benchmarkInmemoryPartInitFromRows(b, benchRawRowsWorstCase) +} + +func BenchmarkInmemoryPartInitFromRowsBestCase(b *testing.B) { + benchmarkInmemoryPartInitFromRows(b, benchRawRowsBestCase) +} + +func benchmarkInmemoryPartInitFromRows(b *testing.B, rows []rawRow) { + b.ReportAllocs() + b.SetBytes(int64(len(rows))) + b.RunParallel(func(pb *testing.PB) { + var mp inmemoryPart + for pb.Next() { + mp.InitFromRows(rows) + } + }) +} + +// Each row belongs to an unique TSID +var benchRawRowsWorstCase = func() []rawRow { + var rows []rawRow + var r rawRow + for i := 0; i < 1e5; i++ { + r.TSID.MetricID = uint64(i) + r.Timestamp = rand.Int63() + r.Value = rand.NormFloat64() + r.PrecisionBits = uint8(i%64) + 1 + rows = append(rows, r) + } + return rows +}() + +// All the rows belong to a single TSID, values are zeros, timestamps +// are delimited by const delta. +var benchRawRowsBestCase = func() []rawRow { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + for i := 0; i < 1e5; i++ { + r.Timestamp += 30e3 + rows = append(rows, r) + } + return rows +}() diff --git a/lib/storage/merge.go b/lib/storage/merge.go new file mode 100644 index 000000000..29da58c0e --- /dev/null +++ b/lib/storage/merge.go @@ -0,0 +1,205 @@ +package storage + +import ( + "fmt" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// mergeBlockStreams merges bsrs into bsw and updates ph. +// +// mergeBlockStreams returns immediately if stopCh is closed. +// +// rowsMerged is atomically updated with the number of merged rows during the merge. +func mergeBlockStreams(ph *partHeader, bsw *blockStreamWriter, bsrs []*blockStreamReader, stopCh <-chan struct{}, rowsMerged *uint64, + deletedMetricIDs map[uint64]struct{}, rowsDeleted *uint64) error { + ph.Reset() + + bsm := bsmPool.Get().(*blockStreamMerger) + bsm.Init(bsrs) + err := mergeBlockStreamsInternal(ph, bsw, bsm, stopCh, rowsMerged, deletedMetricIDs, rowsDeleted) + bsm.reset() + bsmPool.Put(bsm) + bsw.MustClose() + if err == nil { + return nil + } + if err == errForciblyStopped { + return err + } + return fmt.Errorf("cannot merge %d streams: %s", len(bsrs), err) +} + +var bsmPool = &sync.Pool{ + New: func() interface{} { + return &blockStreamMerger{} + }, +} + +var errForciblyStopped = fmt.Errorf("forcibly stopped") + +func mergeBlockStreamsInternal(ph *partHeader, bsw *blockStreamWriter, bsm *blockStreamMerger, stopCh <-chan struct{}, rowsMerged *uint64, + deletedMetricIDs map[uint64]struct{}, rowsDeleted *uint64) error { + // Search for the first block to merge + var pendingBlock *Block + for bsm.NextBlock() { + select { + case <-stopCh: + return errForciblyStopped + default: + } + if _, deleted := deletedMetricIDs[bsm.Block.bh.TSID.MetricID]; deleted { + // Skip blocks for deleted metrics. + *rowsDeleted += uint64(bsm.Block.bh.RowsCount) + continue + } + pendingBlock = getBlock() + pendingBlock.CopyFrom(bsm.Block) + break + } + if pendingBlock != nil { + defer putBlock(pendingBlock) + } + + // Merge blocks. + tmpBlock := getBlock() + defer putBlock(tmpBlock) + for bsm.NextBlock() { + select { + case <-stopCh: + return errForciblyStopped + default: + } + if _, deleted := deletedMetricIDs[bsm.Block.bh.TSID.MetricID]; deleted { + // Skip blocks for deleted metrics. + *rowsDeleted += uint64(bsm.Block.bh.RowsCount) + continue + } + + // Verify whether pendingBlock may be merged with bsm.Block (the current block). + if pendingBlock.bh.TSID.MetricID != bsm.Block.bh.TSID.MetricID { + // Fast path - blocks belong to distinct time series. + // Write the pendingBlock and then deal with bsm.Block. + if bsm.Block.bh.TSID.Less(&pendingBlock.bh.TSID) { + logger.Panicf("BUG: the next TSID=%+v is smaller than the current TSID=%+v", &bsm.Block.bh.TSID, &pendingBlock.bh.TSID) + } + bsw.WriteExternalBlock(pendingBlock, ph, rowsMerged) + pendingBlock.CopyFrom(bsm.Block) + continue + } + if pendingBlock.tooBig() && pendingBlock.bh.MaxTimestamp <= bsm.Block.bh.MinTimestamp { + // Fast path - pendingBlock is too big and it doesn't overlap with bsm.Block. + // Write the pendingBlock and then deal with bsm.Block. + bsw.WriteExternalBlock(pendingBlock, ph, rowsMerged) + pendingBlock.CopyFrom(bsm.Block) + continue + } + + // Slow path - pendingBlock and bsm.Block belong to the same time series, + // so they must be merged. + if err := unmarshalAndCalibrateScale(pendingBlock, bsm.Block); err != nil { + return fmt.Errorf("cannot unmarshal and calibrate scale for blocks to be merged: %s", err) + } + tmpBlock.Reset() + tmpBlock.bh.TSID = bsm.Block.bh.TSID + tmpBlock.bh.Scale = bsm.Block.bh.Scale + tmpBlock.bh.PrecisionBits = minUint8(pendingBlock.bh.PrecisionBits, bsm.Block.bh.PrecisionBits) + mergeBlocks(tmpBlock, pendingBlock, bsm.Block) + if len(tmpBlock.timestamps) <= maxRowsPerBlock { + // More entries may be added to tmpBlock. Swap it with pendingBlock, + // so more entries may be added to pendingBlock on the next iteration. + tmpBlock.fixupTimestamps() + pendingBlock, tmpBlock = tmpBlock, pendingBlock + continue + } + + // Write the first len(maxRowsPerBlock) of tmpBlock.timestamps to bsw, + // leave the rest in pendingBlock. + tmpBlock.nextIdx = maxRowsPerBlock + pendingBlock.CopyFrom(tmpBlock) + pendingBlock.fixupTimestamps() + tmpBlock.nextIdx = 0 + tmpBlock.timestamps = tmpBlock.timestamps[:maxRowsPerBlock] + tmpBlock.values = tmpBlock.values[:maxRowsPerBlock] + tmpBlock.fixupTimestamps() + bsw.WriteExternalBlock(tmpBlock, ph, rowsMerged) + } + if err := bsm.Error(); err != nil { + return fmt.Errorf("cannot read block to be merged: %s", err) + } + if pendingBlock != nil { + bsw.WriteExternalBlock(pendingBlock, ph, rowsMerged) + } + return nil +} + +// mergeBlocks merges ib1 and ib2 to ob. +func mergeBlocks(ob, ib1, ib2 *Block) { + ib1.assertMergeable(ib2) + ib1.assertUnmarshaled() + ib2.assertUnmarshaled() + + if ib1.bh.MaxTimestamp < ib2.bh.MinTimestamp { + // Fast path - ib1 values have smaller timestamps than ib2 values. + appendRows(ob, ib1) + appendRows(ob, ib2) + return + } + if ib2.bh.MaxTimestamp < ib1.bh.MinTimestamp { + // Fast path - ib2 values have smaller timestamps than ib1 values. + appendRows(ob, ib2) + appendRows(ob, ib1) + return + } + if ib1.nextIdx >= len(ib1.timestamps) { + appendRows(ob, ib2) + return + } + if ib2.nextIdx >= len(ib2.timestamps) { + appendRows(ob, ib1) + return + } + for { + i := ib1.nextIdx + ts2 := ib2.timestamps[ib2.nextIdx] + for i < len(ib1.timestamps) && ib1.timestamps[i] <= ts2 { + i++ + } + ob.timestamps = append(ob.timestamps, ib1.timestamps[ib1.nextIdx:i]...) + ob.values = append(ob.values, ib1.values[ib1.nextIdx:i]...) + ib1.nextIdx = i + if ib1.nextIdx >= len(ib1.timestamps) { + appendRows(ob, ib2) + return + } + ib1, ib2 = ib2, ib1 + } +} + +func appendRows(ob, ib *Block) { + ob.timestamps = append(ob.timestamps, ib.timestamps[ib.nextIdx:]...) + ob.values = append(ob.values, ib.values[ib.nextIdx:]...) +} + +func unmarshalAndCalibrateScale(b1, b2 *Block) error { + if err := b1.UnmarshalData(); err != nil { + return err + } + if err := b2.UnmarshalData(); err != nil { + return err + } + + scale := decimal.CalibrateScale(b1.values, b1.bh.Scale, b2.values, b2.bh.Scale) + b1.bh.Scale = scale + b2.bh.Scale = scale + return nil +} + +func minUint8(a, b uint8) uint8 { + if a < b { + return a + } + return b +} diff --git a/lib/storage/merge_test.go b/lib/storage/merge_test.go new file mode 100644 index 000000000..0e4d68191 --- /dev/null +++ b/lib/storage/merge_test.go @@ -0,0 +1,463 @@ +package storage + +import ( + "math/rand" + "testing" +) + +func TestMergeBlockStreamsOneStreamOneRow(t *testing.T) { + rows := []rawRow{ + { + Timestamp: 82394327423432, + Value: 123.42389, + PrecisionBits: defaultPrecisionBits, + }, + } + bsr := newTestBlockStreamReader(t, rows) + bsrs := []*blockStreamReader{bsr} + testMergeBlockStreams(t, bsrs, 1, 1, rows[0].Timestamp, rows[0].Timestamp) +} + +func TestMergeBlockStreamsOneStreamOneBlockManyRows(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = 4 + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + for i := 0; i < maxRowsPerBlock; i++ { + r.Timestamp = int64(rand.Intn(1e15)) + r.Value = rand.NormFloat64() * 2332 + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr := newTestBlockStreamReader(t, rows) + bsrs := []*blockStreamReader{bsr} + testMergeBlockStreams(t, bsrs, 1, maxRowsPerBlock, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsOneStreamManyBlocksOneRow(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = 4 + const blocksCount = 1234 + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + for i := 0; i < blocksCount; i++ { + initTestTSID(&r.TSID) + r.TSID.MetricID = uint64(i * 123) + r.Timestamp = int64(rand.Intn(1e15)) + r.Value = rand.NormFloat64() * 2332 + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr := newTestBlockStreamReader(t, rows) + bsrs := []*blockStreamReader{bsr} + testMergeBlockStreams(t, bsrs, blocksCount, blocksCount, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsOneStreamManyBlocksManyRows(t *testing.T) { + var rows []rawRow + var r rawRow + initTestTSID(&r.TSID) + r.PrecisionBits = 4 + const blocksCount = 1234 + const rowsCount = 4938 + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + for i := 0; i < rowsCount; i++ { + r.TSID.MetricID = uint64(i % blocksCount) + r.Timestamp = int64(rand.Intn(1e15)) + r.Value = rand.NormFloat64() * 2332 + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr := newTestBlockStreamReader(t, rows) + bsrs := []*blockStreamReader{bsr} + testMergeBlockStreams(t, bsrs, blocksCount, rowsCount, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsTwoStreamsOneBlockTwoRows(t *testing.T) { + // Identical rows + rows := []rawRow{ + { + Timestamp: 182394327423432, + Value: 3123.42389, + PrecisionBits: defaultPrecisionBits, + }, + } + bsr1 := newTestBlockStreamReader(t, rows) + bsr2 := newTestBlockStreamReader(t, rows) + bsrs := []*blockStreamReader{bsr1, bsr2} + testMergeBlockStreams(t, bsrs, 1, 2, rows[0].Timestamp, rows[0].Timestamp) + + // Distinct rows for the same TSID. + minTimestamp := int64(12332443) + maxTimestamp := int64(23849834543) + rows = []rawRow{ + { + Timestamp: maxTimestamp, + Value: 3123.42389, + PrecisionBits: defaultPrecisionBits, + }, + } + bsr1 = newTestBlockStreamReader(t, rows) + rows = []rawRow{ + { + Timestamp: minTimestamp, + Value: 23.42389, + PrecisionBits: defaultPrecisionBits, + }, + } + bsr2 = newTestBlockStreamReader(t, rows) + bsrs = []*blockStreamReader{bsr1, bsr2} + testMergeBlockStreams(t, bsrs, 1, 2, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsTwoStreamsTwoBlocksOneRow(t *testing.T) { + minTimestamp := int64(4389345) + maxTimestamp := int64(8394584354) + + rows := []rawRow{ + { + TSID: TSID{ + MetricID: 8454, + }, + Timestamp: minTimestamp, + Value: 33.42389, + PrecisionBits: defaultPrecisionBits, + }, + } + bsr1 := newTestBlockStreamReader(t, rows) + + rows = []rawRow{ + { + TSID: TSID{ + MetricID: 4454, + }, + Timestamp: maxTimestamp, + Value: 323.42389, + PrecisionBits: defaultPrecisionBits, + }, + } + bsr2 := newTestBlockStreamReader(t, rows) + + bsrs := []*blockStreamReader{bsr1, bsr2} + testMergeBlockStreams(t, bsrs, 2, 2, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsTwoStreamsManyBlocksManyRows(t *testing.T) { + const blocksCount = 1234 + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + + var rows []rawRow + var r rawRow + initTestTSID(&r.TSID) + r.PrecisionBits = 2 + const rowsCount1 = 4938 + for i := 0; i < rowsCount1; i++ { + r.TSID.MetricID = uint64(i % blocksCount) + r.Timestamp = int64(rand.Intn(1e15)) + r.Value = rand.NormFloat64() * 2332 + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr1 := newTestBlockStreamReader(t, rows) + + rows = rows[:0] + const rowsCount2 = 3281 + for i := 0; i < rowsCount2; i++ { + r.TSID.MetricID = uint64((i + 17) % blocksCount) + r.Timestamp = int64(rand.Intn(1e15)) + r.Value = rand.NormFloat64() * 2332 + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr2 := newTestBlockStreamReader(t, rows) + + bsrs := []*blockStreamReader{bsr1, bsr2} + testMergeBlockStreams(t, bsrs, blocksCount, rowsCount1+rowsCount2, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsTwoStreamsBigOverlappingBlocks(t *testing.T) { + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + + var rows []rawRow + var r rawRow + r.PrecisionBits = 5 + const rowsCount1 = maxRowsPerBlock + 234 + for i := 0; i < rowsCount1; i++ { + r.Timestamp = int64(i * 2894) + r.Value = float64(int(rand.NormFloat64() * 1e2)) + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr1 := newTestBlockStreamReader(t, rows) + + rows = rows[:0] + const rowsCount2 = maxRowsPerBlock + 2344 + for i := 0; i < rowsCount2; i++ { + r.Timestamp = int64(i * 2494) + r.Value = float64(int(rand.NormFloat64() * 1e2)) + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr2 := newTestBlockStreamReader(t, rows) + + bsrs := []*blockStreamReader{bsr1, bsr2} + testMergeBlockStreams(t, bsrs, 3, rowsCount1+rowsCount2, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsTwoStreamsBigSequentialBlocks(t *testing.T) { + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + + var rows []rawRow + var r rawRow + r.PrecisionBits = 5 + const rowsCount1 = maxRowsPerBlock + 234 + for i := 0; i < rowsCount1; i++ { + r.Timestamp = int64(i * 2894) + r.Value = float64(int(rand.NormFloat64() * 1e2)) + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + maxTimestampB1 := rows[len(rows)-1].Timestamp + bsr1 := newTestBlockStreamReader(t, rows) + + rows = rows[:0] + const rowsCount2 = maxRowsPerBlock - 233 + for i := 0; i < rowsCount2; i++ { + r.Timestamp = maxTimestampB1 + int64(i*2494) + r.Value = float64(int(rand.NormFloat64() * 1e2)) + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr2 := newTestBlockStreamReader(t, rows) + + bsrs := []*blockStreamReader{bsr1, bsr2} + testMergeBlockStreams(t, bsrs, 3, rowsCount1+rowsCount2, minTimestamp, maxTimestamp) +} + +func TestMergeBlockStreamsManyStreamsManyBlocksManyRows(t *testing.T) { + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + + var r rawRow + initTestTSID(&r.TSID) + r.PrecisionBits = defaultPrecisionBits + + rowsCount := 0 + const blocksCount = 113 + var bsrs []*blockStreamReader + for i := 0; i < 20; i++ { + rowsPerStream := rand.Intn(500) + var rows []rawRow + for j := 0; j < rowsPerStream; j++ { + r.TSID.MetricID = uint64(j % blocksCount) + r.Timestamp = int64(rand.Intn(1e10)) + r.Value = rand.NormFloat64() + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr := newTestBlockStreamReader(t, rows) + bsrs = append(bsrs, bsr) + rowsCount += rowsPerStream + } + testMergeBlockStreams(t, bsrs, blocksCount, rowsCount, minTimestamp, maxTimestamp) +} + +func TestMergeForciblyStop(t *testing.T) { + minTimestamp := int64(1<<63 - 1) + maxTimestamp := int64(-1 << 63) + + var r rawRow + initTestTSID(&r.TSID) + r.PrecisionBits = defaultPrecisionBits + + const blocksCount = 113 + var bsrs []*blockStreamReader + for i := 0; i < 20; i++ { + rowsPerStream := rand.Intn(1000) + var rows []rawRow + for j := 0; j < rowsPerStream; j++ { + r.TSID.MetricID = uint64(j % blocksCount) + r.Timestamp = int64(rand.Intn(1e10)) + r.Value = rand.NormFloat64() + rows = append(rows, r) + + if r.Timestamp < minTimestamp { + minTimestamp = r.Timestamp + } + if r.Timestamp > maxTimestamp { + maxTimestamp = r.Timestamp + } + } + bsr := newTestBlockStreamReader(t, rows) + bsrs = append(bsrs, bsr) + } + + var mp inmemoryPart + var bsw blockStreamWriter + bsw.InitFromInmemoryPart(&mp) + ch := make(chan struct{}) + var rowsMerged, rowsDeleted uint64 + close(ch) + if err := mergeBlockStreams(&mp.ph, &bsw, bsrs, ch, &rowsMerged, nil, &rowsDeleted); err != errForciblyStopped { + t.Fatalf("unexpected error in mergeBlockStreams: got %v; want %v", err, errForciblyStopped) + } + if rowsMerged != 0 { + t.Fatalf("unexpected rowsMerged; got %d; want %d", rowsMerged, 0) + } + if rowsDeleted != 0 { + t.Fatalf("unexpected rowsDeleted; got %d; want %d", rowsDeleted, 0) + } +} + +func testMergeBlockStreams(t *testing.T, bsrs []*blockStreamReader, expectedBlocksCount, expectedRowsCount int, expectedMinTimestamp, expectedMaxTimestamp int64) { + t.Helper() + + var mp inmemoryPart + + var bsw blockStreamWriter + bsw.InitFromInmemoryPart(&mp) + + var rowsMerged, rowsDeleted uint64 + if err := mergeBlockStreams(&mp.ph, &bsw, bsrs, nil, &rowsMerged, nil, &rowsDeleted); err != nil { + t.Fatalf("unexpected error in mergeBlockStreams: %s", err) + } + + // Verify written data. + if mp.ph.RowsCount != uint64(expectedRowsCount) { + t.Fatalf("unexpected rows count in partHeader; got %d; want %d", mp.ph.RowsCount, expectedRowsCount) + } + if rowsMerged != mp.ph.RowsCount { + t.Fatalf("unexpected rowsMerged; got %d; want %d", rowsMerged, mp.ph.RowsCount) + } + if rowsDeleted != 0 { + t.Fatalf("unexpected rowsDeleted; got %d; want %d", rowsDeleted, 0) + } + if mp.ph.MinTimestamp != expectedMinTimestamp { + t.Fatalf("unexpected MinTimestamp in partHeader; got %d; want %d", mp.ph.MinTimestamp, expectedMinTimestamp) + } + if mp.ph.MaxTimestamp != expectedMaxTimestamp { + t.Fatalf("unexpected MaxTimestamp in partHeader; got %d; want %d", mp.ph.MaxTimestamp, expectedMaxTimestamp) + } + + var bsr1 blockStreamReader + bsr1.InitFromInmemoryPart(&mp) + blocksCount := 0 + rowsCount := 0 + var prevTSID TSID + for bsr1.NextBlock() { + if bsr1.Block.bh.TSID.Less(&prevTSID) { + t.Fatalf("the next block cannot have higher TSID than the previous block; got\n%+v vs\n%+v", &bsr1.Block.bh.TSID, &prevTSID) + } + prevTSID = bsr1.Block.bh.TSID + + expectedRowsPerBlock := int(bsr1.Block.bh.RowsCount) + if expectedRowsPerBlock == 0 { + t.Fatalf("got zero rows in a block") + } + if bsr1.Block.bh.MinTimestamp < expectedMinTimestamp { + t.Fatalf("too small MinTimestamp in the blockHeader; got %d; cannot be smaller than %d", bsr1.Block.bh.MinTimestamp, expectedMinTimestamp) + } + if bsr1.Block.bh.MaxTimestamp > expectedMaxTimestamp { + t.Fatalf("too big MaxTimestamp in the blockHeader; got %d; cannot be bigger than %d", bsr1.Block.bh.MaxTimestamp, expectedMaxTimestamp) + } + + if err := bsr1.Block.UnmarshalData(); err != nil { + t.Fatalf("cannot unmarshal block from merged stream: %s", err) + } + + prevTimestamp := bsr1.Block.bh.MinTimestamp + blockMaxTimestamp := bsr1.Block.bh.MaxTimestamp + rowsPerBlock := 0 + for bsr1.Block.nextRow() { + rowsPerBlock++ + timestamp := bsr1.Block.timestamps[bsr1.Block.nextIdx-1] + if timestamp < prevTimestamp { + t.Fatalf("the next timestamp cannot be smaller than the previous timestamp; got %d vs %d", timestamp, prevTimestamp) + } + prevTimestamp = timestamp + } + if prevTimestamp > blockMaxTimestamp { + t.Fatalf("the last timestamp cannot be bigger than the MaxTimestamp in the blockHeader; got %d vs %d", prevTimestamp, blockMaxTimestamp) + } + if rowsPerBlock != expectedRowsPerBlock { + t.Fatalf("unexpected rows read in the block; got %d; want %d", rowsPerBlock, expectedRowsPerBlock) + } + rowsCount += rowsPerBlock + blocksCount++ + } + if err := bsr1.Error(); err != nil { + t.Fatalf("unexpected error when reading merged stream: %s", err) + } + if blocksCount != expectedBlocksCount { + t.Fatalf("unexpected blocks read from merged stream; got %d; want %d", blocksCount, expectedBlocksCount) + } + if rowsCount != expectedRowsCount { + t.Fatalf("unexpected rows read from merged stream; got %d; want %d", rowsCount, expectedRowsCount) + } +} diff --git a/lib/storage/merge_timing_test.go b/lib/storage/merge_timing_test.go new file mode 100644 index 000000000..ecdb60861 --- /dev/null +++ b/lib/storage/merge_timing_test.go @@ -0,0 +1,115 @@ +package storage + +import ( + "fmt" + "math/rand" + "testing" +) + +func BenchmarkMergeBlockStreamsTwoSourcesWorstCase(b *testing.B) { + benchmarkMergeBlockStreams(b, benchTwoSourcesWorstCaseMPS, benchTwoSourcesWorstCaseMPSRowsPerLoop) +} + +func BenchmarkMergeBlockStreamsTwoSourcesBestCase(b *testing.B) { + benchmarkMergeBlockStreams(b, benchTwoSourcesBestCaseMPS, benchTwoSourcesBestCaseMPSRowsPerLoop) +} + +func BenchmarkMergeBlockStreamsFourSourcesWorstCase(b *testing.B) { + benchmarkMergeBlockStreams(b, benchFourSourcesWorstCaseMPS, benchFourSourcesWorstCaseMPSRowsPerLoop) +} + +func BenchmarkMergeBlockStreamsFourSourcesBestCase(b *testing.B) { + benchmarkMergeBlockStreams(b, benchFourSourcesBestCaseMPS, benchFourSourcesBestCaseMPSRowsPerLoop) +} + +func benchmarkMergeBlockStreams(b *testing.B, mps []*inmemoryPart, rowsPerLoop int64) { + var rowsMerged, rowsDeleted uint64 + + b.ReportAllocs() + b.SetBytes(rowsPerLoop) + b.RunParallel(func(pb *testing.PB) { + var bsw blockStreamWriter + var mpOut inmemoryPart + bsrs := make([]*blockStreamReader, len(mps)) + for i := range mps { + var bsr blockStreamReader + bsrs[i] = &bsr + } + for pb.Next() { + for i, mp := range mps { + bsrs[i].InitFromInmemoryPart(mp) + } + mpOut.Reset() + bsw.InitFromInmemoryPart(&mpOut) + if err := mergeBlockStreams(&mpOut.ph, &bsw, bsrs, nil, &rowsMerged, nil, &rowsDeleted); err != nil { + panic(fmt.Errorf("cannot merge block streams: %s", err)) + } + } + }) +} + +var benchTwoSourcesWorstCaseMPS = func() []*inmemoryPart { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + for i := 0; i < maxRowsPerBlock/2-1; i++ { + r.Value = rand.NormFloat64() + r.Timestamp = rand.Int63n(1e12) + rows = append(rows, r) + } + mp := newTestInmemoryPart(rows) + return []*inmemoryPart{mp, mp} +}() + +const benchTwoSourcesWorstCaseMPSRowsPerLoop = (maxRowsPerBlock - 2) + +var benchTwoSourcesBestCaseMPS = func() []*inmemoryPart { + var r rawRow + var mps []*inmemoryPart + for i := 0; i < 2; i++ { + var rows []rawRow + r.PrecisionBits = defaultPrecisionBits + r.TSID.MetricID = uint64(i) + for j := 0; j < maxRowsPerBlock; j++ { + rows = append(rows, r) + } + mp := newTestInmemoryPart(rows) + mps = append(mps, mp) + } + return mps +}() + +const benchTwoSourcesBestCaseMPSRowsPerLoop = 2 * maxRowsPerBlock + +var benchFourSourcesWorstCaseMPS = func() []*inmemoryPart { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + for i := 0; i < maxRowsPerBlock/2-1; i++ { + r.Value = rand.NormFloat64() + r.Timestamp = rand.Int63n(1e12) + rows = append(rows, r) + } + mp := newTestInmemoryPart(rows) + return []*inmemoryPart{mp, mp, mp, mp} +}() + +const benchFourSourcesWorstCaseMPSRowsPerLoop = 2 * (maxRowsPerBlock - 2) + +var benchFourSourcesBestCaseMPS = func() []*inmemoryPart { + var r rawRow + var mps []*inmemoryPart + for i := 0; i < 4; i++ { + var rows []rawRow + r.PrecisionBits = defaultPrecisionBits + r.TSID.MetricID = uint64(i) + for j := 0; j < maxRowsPerBlock; j++ { + rows = append(rows, r) + } + mp := newTestInmemoryPart(rows) + mps = append(mps, mp) + } + return mps +}() + +const benchFourSourcesBestCaseMPSRowsPerLoop = 4 * maxRowsPerBlock diff --git a/lib/storage/metaindex_row.go b/lib/storage/metaindex_row.go new file mode 100644 index 000000000..81649af78 --- /dev/null +++ b/lib/storage/metaindex_row.go @@ -0,0 +1,166 @@ +package storage + +import ( + "fmt" + "io" + "io/ioutil" + "sort" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" +) + +// metaindexRow is a single metaindex row. +// +// The row points to a single index block containing block headers. +type metaindexRow struct { + // TSID is the first TSID in the corresponding index block. + TSID TSID + + // BlockHeadersCount is the number of block headers + // in the given index block. + BlockHeadersCount uint32 + + // MinTimestamp is the minimum timestamp in the given index block. + MinTimestamp int64 + + // MaxTimestamp is the maximum timestamp in the given index block. + MaxTimestamp int64 + + // IndexBlockOffset is the offset of index block. + IndexBlockOffset uint64 + + // IndexBlockSize is the size of compressed index block. + IndexBlockSize uint32 +} + +// Reset resets the mr using the given tsid. +func (mr *metaindexRow) Reset() { + mr.TSID = TSID{} + mr.BlockHeadersCount = 0 + mr.MinTimestamp = (1 << 63) - 1 + mr.MaxTimestamp = -1 << 63 + mr.IndexBlockOffset = 0 + mr.IndexBlockSize = 0 +} + +// RegisterBlockHeader registers the given bh in the mr. +func (mr *metaindexRow) RegisterBlockHeader(bh *blockHeader) { + mr.BlockHeadersCount++ + if mr.BlockHeadersCount == 1 { + mr.TSID = bh.TSID + mr.MinTimestamp = bh.MinTimestamp + mr.MaxTimestamp = bh.MaxTimestamp + return + } + + if bh.MinTimestamp < mr.MinTimestamp { + mr.MinTimestamp = bh.MinTimestamp + } + if bh.MaxTimestamp > mr.MaxTimestamp { + mr.MaxTimestamp = bh.MaxTimestamp + } +} + +// Marshal appends marshaled mr to dst and returns the result. +func (mr *metaindexRow) Marshal(dst []byte) []byte { + dst = mr.TSID.Marshal(dst) + dst = encoding.MarshalUint32(dst, mr.BlockHeadersCount) + dst = encoding.MarshalInt64(dst, mr.MinTimestamp) + dst = encoding.MarshalInt64(dst, mr.MaxTimestamp) + dst = encoding.MarshalUint64(dst, mr.IndexBlockOffset) + dst = encoding.MarshalUint32(dst, mr.IndexBlockSize) + return dst +} + +// Unmarshal unmarshals mr from src and returns the tail of src. +func (mr *metaindexRow) Unmarshal(src []byte) ([]byte, error) { + // Unmarshal TSID + tail, err := mr.TSID.Unmarshal(src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal TSID: %s", err) + } + src = tail + + // Unmarshal BlockHeadersCount + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal BlockHeadersCount from %d bytes; want at least %d bytes", len(src), 4) + } + mr.BlockHeadersCount = encoding.UnmarshalUint32(src) + src = src[4:] + + // Unmarshal MinTimestamp + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal MinTimestamp from %d bytes; want at least %d bytes", len(src), 8) + } + mr.MinTimestamp = encoding.UnmarshalInt64(src) + src = src[8:] + + // Unmarshal MaxTimestamp + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal MaxTimestamp from %d bytes; want at least %d bytes", len(src), 8) + } + mr.MaxTimestamp = encoding.UnmarshalInt64(src) + src = src[8:] + + // Unmarshal IndexBlockOffset + if len(src) < 8 { + return src, fmt.Errorf("cannot unmarshal IndexBlockOffset from %d bytes; want at least %d bytes", len(src), 8) + } + mr.IndexBlockOffset = encoding.UnmarshalUint64(src) + src = src[8:] + + // Unmarshal IndexBlockSize + if len(src) < 4 { + return src, fmt.Errorf("cannot unmarshal IndexBlockSize from %d bytes; want at least %d bytes", len(src), 4) + } + mr.IndexBlockSize = encoding.UnmarshalUint32(src) + src = src[4:] + + // Validate unmarshaled data. + if mr.BlockHeadersCount <= 0 { + return src, fmt.Errorf("BlockHeadersCount must be greater than 0") + } + if mr.IndexBlockSize > 2*8*maxBlockSize { + return src, fmt.Errorf("too big IndexBlockSize; got %d; cannot exceed %d", mr.IndexBlockSize, 2*8*maxBlockSize) + } + + return src, nil +} + +func unmarshalMetaindexRows(dst []metaindexRow, r io.Reader) ([]metaindexRow, error) { + compressedData, err := ioutil.ReadAll(r) + if err != nil { + return dst, fmt.Errorf("cannot read metaindex rows: %s", err) + } + data, err := encoding.DecompressZSTD(nil, compressedData) + if err != nil { + return dst, fmt.Errorf("cannot decompress metaindex rows: %s", err) + } + + dstLen := len(dst) + for len(data) > 0 { + if len(dst) < cap(dst) { + dst = dst[:len(dst)+1] + } else { + dst = append(dst, metaindexRow{}) + } + mr := &dst[len(dst)-1] + tail, err := mr.Unmarshal(data) + if err != nil { + return dst, fmt.Errorf("cannot unmarshal metaindexRow #%d from metaindex data: %s", len(dst)-dstLen, err) + } + data = tail + } + if dstLen == len(dst) { + return dst, fmt.Errorf("expecting non-zero metaindex rows; got zero") + } + + // Make sure metaindex rows are sorted by tsid + tmp := dst[dstLen:] + ok := sort.SliceIsSorted(tmp, func(i, j int) bool { return tmp[i].TSID.Less(&tmp[j].TSID) }) + if !ok { + return dst, fmt.Errorf("metaindexRow values must be sorted by TSID; got %+v", tmp) + } + + return dst, nil +} diff --git a/lib/storage/metaindex_row_test.go b/lib/storage/metaindex_row_test.go new file mode 100644 index 000000000..f55e755de --- /dev/null +++ b/lib/storage/metaindex_row_test.go @@ -0,0 +1,99 @@ +package storage + +import ( + "fmt" + "reflect" + "testing" + "testing/quick" +) + +func TestMetaindexRowReset(t *testing.T) { + var mr metaindexRow + + mr.TSID.MetricID = 234 + mr.BlockHeadersCount = 1323 + mr.MinTimestamp = -234 + mr.MaxTimestamp = 8989 + mr.IndexBlockOffset = 89439 + mr.IndexBlockSize = 89984 + + var mrEmpty metaindexRow + mrEmpty.MinTimestamp = 1<<63 - 1 + mrEmpty.MaxTimestamp = -1 << 63 + if reflect.DeepEqual(&mr, &mrEmpty) { + t.Fatalf("mr=%+v cannot be equal to mrEmpty=%+v", &mr, &mrEmpty) + } + mr.Reset() + if !reflect.DeepEqual(&mr, &mrEmpty) { + t.Fatalf("mr=%+v must be equal to mrEmpty=%+v", &mr, &mrEmpty) + } +} + +func TestMetaindexRowMarshalUnmarshal(t *testing.T) { + var mr metaindexRow + + for i := 0; i < 1000; i++ { + initTestMetaindexRow(&mr) + testMetaindexRowMarshalUnmarshal(t, &mr) + } +} + +func testMetaindexRowMarshalUnmarshal(t *testing.T, mr *metaindexRow) { + dst := mr.Marshal(nil) + var mr1 metaindexRow + tail, err := mr1.Unmarshal(dst) + if err != nil { + t.Fatalf("cannot unmarshal mr=%+v from dst=%x: %s", mr, dst, err) + } + if len(tail) > 0 { + t.Fatalf("unexpected non-zero tail got after unmarshaling mr=%+v from dst=%x: %x", mr, dst, tail) + } + if !reflect.DeepEqual(mr, &mr1) { + t.Fatalf("unexpected unmarshaled mr; got\n%+v; want\n%+v", &mr1, mr) + } + + prefix := []byte("foo") + dstNew := mr.Marshal(prefix) + if string(dstNew[:len(prefix)]) != string(prefix) { + t.Fatalf("unexepcted prefix when marshaling mr=%+v; got\n%x; want\n%x", mr, dstNew[:len(prefix)], prefix) + } + if string(dstNew[len(prefix):]) != string(dst) { + t.Fatalf("unexpected prefixed dstNew for mr=%+v; got\n%x; want\n%x", mr, dstNew[len(prefix):], dst) + } + + suffix := []byte("bar") + dst = append(dst, suffix...) + var mr2 metaindexRow + tail, err = mr2.Unmarshal(dst) + if err != nil { + t.Fatalf("cannot unmarshal mr=%+v from prefixed dst=%x: %s", mr, dst, err) + } + if string(tail) != string(suffix) { + t.Fatalf("invalid tail after unmarshaling mr=%+v from prefixed dst; got\n%x; want\n%x", mr, tail, suffix) + } + if !reflect.DeepEqual(mr, &mr2) { + t.Fatalf("unexpected unmarshaled mr from prefixed dst; got\n%+v; want\n%+v", &mr2, mr) + } +} + +func initTestMetaindexRow(mr *metaindexRow) { + rndLock.Lock() + iv, ok := quick.Value(metaindexRowType, rnd) + rndLock.Unlock() + if !ok { + panic(fmt.Errorf("error in quick.Value when generating random metaindexRow")) + } + rndMR := iv.Interface().(*metaindexRow) + if rndMR == nil { + rndMR = &metaindexRow{} + } + *mr = *rndMR + if mr.BlockHeadersCount == 0 { + mr.BlockHeadersCount = 1 + } + if mr.IndexBlockSize > 2*8*maxBlockSize { + mr.IndexBlockSize = 2 * 8 * maxBlockSize + } +} + +var metaindexRowType = reflect.TypeOf(&metaindexRow{}) diff --git a/lib/storage/metric_name.go b/lib/storage/metric_name.go new file mode 100644 index 000000000..15dcaf265 --- /dev/null +++ b/lib/storage/metric_name.go @@ -0,0 +1,653 @@ +package storage + +import ( + "bytes" + "fmt" + "sort" + "strings" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/prompb" +) + +const ( + escapeChar = 0 + tagSeparatorChar = 1 + kvSeparatorChar = 2 +) + +// Tag represents a (key, value) tag for metric. +type Tag struct { + Key []byte + Value []byte +} + +// Marshal appends marshaled tag to dst and returns the result. +func (tag *Tag) Marshal(dst []byte) []byte { + dst = marshalTagValue(dst, tag.Key) + dst = marshalTagValue(dst, tag.Value) + return dst +} + +// Unmarshal unmarshals tag from src and returns the remaining data from src. +func (tag *Tag) Unmarshal(src []byte) ([]byte, error) { + var err error + src, tag.Key, err = unmarshalTagValue(tag.Key[:0], src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal key: %s", err) + } + src, tag.Value, err = unmarshalTagValue(tag.Value[:0], src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal value: %s", err) + } + return src, nil +} + +func (tag *Tag) copyFrom(src *Tag) { + tag.Key = append(tag.Key[:0], src.Key...) + tag.Value = append(tag.Value[:0], src.Value...) +} + +func marshalTagValue(dst, src []byte) []byte { + n1 := bytes.IndexByte(src, escapeChar) + n2 := bytes.IndexByte(src, tagSeparatorChar) + n3 := bytes.IndexByte(src, kvSeparatorChar) + if n1 < 0 && n2 < 0 && n3 < 0 { + // Fast path. + dst = append(dst, src...) + dst = append(dst, tagSeparatorChar) + return dst + } + + // Slow path. + for _, ch := range src { + switch ch { + case escapeChar: + dst = append(dst, escapeChar, '0') + case tagSeparatorChar: + dst = append(dst, escapeChar, '1') + case kvSeparatorChar: + dst = append(dst, escapeChar, '2') + default: + dst = append(dst, ch) + } + } + + dst = append(dst, tagSeparatorChar) + return dst +} + +func unmarshalTagValue(dst, src []byte) ([]byte, []byte, error) { + n := bytes.IndexByte(src, tagSeparatorChar) + if n < 0 { + return src, dst, fmt.Errorf("cannot find the end of tag value") + } + b := src[:n] + src = src[n+1:] + for { + n := bytes.IndexByte(b, escapeChar) + if n < 0 { + dst = append(dst, b...) + return src, dst, nil + } + dst = append(dst, b[:n]...) + b = b[n+1:] + if len(b) == 0 { + return src, dst, fmt.Errorf("missing escaped char") + } + switch b[0] { + case '0': + dst = append(dst, escapeChar) + case '1': + dst = append(dst, tagSeparatorChar) + case '2': + dst = append(dst, kvSeparatorChar) + default: + return src, dst, fmt.Errorf("unsupported escaped char: %c", b[0]) + } + b = b[1:] + } +} + +// MetricName reperesents a metric name. +type MetricName struct { + MetricGroup []byte + + // Tags are optional. They must be sorted by tag Key for canonical view. + // Use sortTags method. + Tags []Tag +} + +// GetMetricName returns a MetricName from pool. +func GetMetricName() *MetricName { + v := mnPool.Get() + if v == nil { + return &MetricName{} + } + return v.(*MetricName) +} + +// PutMetricName returns mn to the pool. +func PutMetricName(mn *MetricName) { + mn.Reset() + mnPool.Put(mn) +} + +var mnPool sync.Pool + +// Reset resets the mn. +func (mn *MetricName) Reset() { + mn.MetricGroup = mn.MetricGroup[:0] + mn.Tags = mn.Tags[:0] +} + +// CopyFrom copies src to mn. +func (mn *MetricName) CopyFrom(src *MetricName) { + if cap(mn.MetricGroup) > 0 { + mn.MetricGroup = append(mn.MetricGroup[:0], src.MetricGroup...) + mn.Tags = copyTags(mn.Tags[:0], src.Tags) + return + } + + // Pre-allocate a single byte slice for MetricGroup + all the tags. + // This reduces the number of memory allocations for zero mn. + size := len(src.MetricGroup) + for i := range src.Tags { + tag := &src.Tags[i] + size += len(tag.Key) + size += len(tag.Value) + } + b := make([]byte, 0, size) + + b = append(b, src.MetricGroup...) + mn.MetricGroup = b[:len(b):len(b)] + + mn.Tags = make([]Tag, len(src.Tags)) + for i := range src.Tags { + st := &src.Tags[i] + dt := &mn.Tags[i] + b = append(b, st.Key...) + dt.Key = b[len(b)-len(st.Key) : len(b) : len(b)] + b = append(b, st.Value...) + dt.Value = b[len(b)-len(st.Value) : len(b) : len(b)] + } +} + +// AddTag adds new tag to mn with the given key and value. +func (mn *MetricName) AddTag(key, value string) { + tag := mn.addNextTag() + tag.Key = append(tag.Key[:0], key...) + tag.Value = append(tag.Value[:0], value...) +} + +// AddTagBytes adds new tag to mn with the given key and value. +func (mn *MetricName) AddTagBytes(key, value []byte) { + tag := mn.addNextTag() + tag.Key = append(tag.Key[:0], key...) + tag.Value = append(tag.Value[:0], value...) +} + +func (mn *MetricName) addNextTag() *Tag { + if len(mn.Tags) < cap(mn.Tags) { + mn.Tags = mn.Tags[:len(mn.Tags)+1] + } else { + mn.Tags = append(mn.Tags, Tag{}) + } + return &mn.Tags[len(mn.Tags)-1] +} + +// ResetMetricGroup resets mn.MetricGroup +func (mn *MetricName) ResetMetricGroup() { + mn.MetricGroup = mn.MetricGroup[:0] +} + +var metricGroupTagKey = []byte("__name__") + +// RemoveTagsOn removes all the tags not included to onTags. +func (mn *MetricName) RemoveTagsOn(onTags []string) { + if !hasTag(onTags, metricGroupTagKey) { + mn.ResetMetricGroup() + } + tags := mn.Tags + mn.Tags = mn.Tags[:0] + if len(onTags) == 0 { + return + } + for i := range tags { + tag := &tags[i] + if hasTag(onTags, tag.Key) { + mn.AddTagBytes(tag.Key, tag.Value) + } + } +} + +// RemoveTag removes a tag with the given tagKey +func (mn *MetricName) RemoveTag(tagKey string) { + if tagKey == "__name__" { + mn.ResetMetricGroup() + return + } + tags := mn.Tags + mn.Tags = mn.Tags[:0] + for i := range tags { + tag := &tags[i] + if string(tag.Key) != tagKey { + mn.AddTagBytes(tag.Key, tag.Value) + } + } +} + +// RemoveTagsIgnoring removes all the tags included in ignoringTags. +func (mn *MetricName) RemoveTagsIgnoring(ignoringTags []string) { + if len(ignoringTags) == 0 { + return + } + if hasTag(ignoringTags, metricGroupTagKey) { + mn.ResetMetricGroup() + } + tags := mn.Tags + mn.Tags = mn.Tags[:0] + for i := range tags { + tag := &tags[i] + if !hasTag(ignoringTags, tag.Key) { + mn.AddTagBytes(tag.Key, tag.Value) + } + } +} + +// GetTagValue returns tag value for the given tagKey. +func (mn *MetricName) GetTagValue(tagKey string) []byte { + if tagKey == "__name__" { + return mn.MetricGroup + } + tags := mn.Tags + for i := range tags { + tag := &tags[i] + if string(tag.Key) == tagKey { + return tag.Value + } + } + return nil +} + +// AddMissingTags adds tags from src with keys matching addTags. +func (mn *MetricName) AddMissingTags(addTags []string, src *MetricName) { + if hasTag(addTags, metricGroupTagKey) { + mn.MetricGroup = append(mn.MetricGroup[:0], src.MetricGroup...) + } + for i := range src.Tags { + srcTag := &src.Tags[i] + if !hasTag(addTags, srcTag.Key) { + continue + } + found := false + for j := range mn.Tags { + tag := &mn.Tags[j] + if string(tag.Key) == string(srcTag.Key) { + found = true + break + } + } + if !found { + mn.AddTagBytes(srcTag.Key, srcTag.Value) + } + } +} + +func hasTag(tags []string, key []byte) bool { + for _, t := range tags { + if t == string(key) { + return true + } + } + return false +} + +// String returns user-readable representation of the metric name. +// +// Use this function only for debug logging. +func (mn *MetricName) String() string { + mn.sortTags() + var tags []string + for i := range mn.Tags { + t := &mn.Tags[i] + tags = append(tags, fmt.Sprintf("%q=%q", t.Key, t.Value)) + } + tagsStr := strings.Join(tags, ", ") + return fmt.Sprintf("MetricGroup=%q, tags=[%s]", mn.MetricGroup, tagsStr) +} + +// Marshal appends marshaled mn to dst and returns the result. +// +// Tags must be sorted before calling this function. +func (mn *MetricName) Marshal(dst []byte) []byte { + // Calculate the required size and pre-allocate space in dst + dstLen := len(dst) + requiredSize := len(mn.MetricGroup) + 1 + for i := range mn.Tags { + tag := &mn.Tags[i] + requiredSize += len(tag.Key) + len(tag.Value) + 2 + } + dst = bytesutil.Resize(dst, requiredSize) + dst = dst[:dstLen] + + // Marshal MetricGroup + dst = marshalTagValue(dst, mn.MetricGroup) + + // Marshal tags. + dst = marshalTags(dst, mn.Tags) + return dst +} + +// Unmarshal unmarshals mn from src. +func (mn *MetricName) Unmarshal(src []byte) error { + // Unmarshal MetricGroup. + var err error + src, mn.MetricGroup, err = unmarshalTagValue(mn.MetricGroup[:0], src) + if err != nil { + return fmt.Errorf("cannot unmarshal MetricGroup: %s", err) + } + + mn.Tags = mn.Tags[:0] + for len(src) > 0 { + tag := mn.addNextTag() + var err error + src, err = tag.Unmarshal(src) + if err != nil { + return fmt.Errorf("cannot unmarshal tag: %s", err) + } + } + + // Verify no identical tag keys. + if len(mn.Tags) > 0 { + prevKey := mn.Tags[0].Key + for i := range mn.Tags[1:] { + t := &mn.Tags[1+i] + if bytes.Equal(t.Key, prevKey) { + return fmt.Errorf("found duplicate key %q", prevKey) + } + prevKey = t.Key + } + } + + return nil +} + +// The maximum length of label name. +// +// Longer names are truncated. +const maxLabelNameLen = 256 + +// The maximum length of label value. +// +// Longer values are truncated. +const maxLabelValueLen = 16 * 1024 + +// The maximum number of labels per each timeseries. +// +// Superflouos lables are dropped. +const maxLabelsPerTimeseries = 30 + +// MarshalMetricNameRaw marshals labels to dst and returns the result. +// +// The result must be unmarshaled with MetricName.unmarshalRaw +func MarshalMetricNameRaw(dst []byte, labels []prompb.Label) []byte { + // Calculate the required space for dst. + dstLen := len(dst) + dstSize := dstLen + for i := range labels { + if i >= maxLabelsPerTimeseries { + break + } + label := &labels[i] + if len(label.Name) > maxLabelNameLen { + label.Name = label.Name[:maxLabelNameLen] + } + if len(label.Value) > maxLabelValueLen { + label.Value = label.Value[:maxLabelValueLen] + } + if len(label.Value) == 0 { + // Skip labels without values, since they have no sense in prometheus. + continue + } + if string(label.Name) == "__name__" { + label.Name = label.Name[:0] + } + dstSize += len(label.Name) + dstSize += len(label.Value) + dstSize += 4 + } + dst = bytesutil.Resize(dst, dstSize)[:dstLen] + + // Marshal labels to dst. + for i := range labels { + if i >= maxLabelsPerTimeseries { + break + } + label := &labels[i] + if len(label.Value) == 0 { + // Skip labels without values, since they have no sense in prometheus. + continue + } + dst = marshalBytesFast(dst, label.Name) + dst = marshalBytesFast(dst, label.Value) + } + return dst +} + +// marshalRaw marshals mn to dst and returns the result. +// +// The results may be unmarshaled with MetricName.unmarshalRaw. +// +// This function is for testing purposes. MarshalMetricNameRaw must be used +// in prod instead. +func (mn *MetricName) marshalRaw(dst []byte) []byte { + dst = marshalBytesFast(dst, nil) + dst = marshalBytesFast(dst, mn.MetricGroup) + + mn.sortTags() + for i := range mn.Tags { + tag := &mn.Tags[i] + dst = marshalBytesFast(dst, tag.Key) + dst = marshalBytesFast(dst, tag.Value) + } + return dst +} + +// unmarshalRaw unmarshals mn encoded with MarshalMetricNameRaw. +func (mn *MetricName) unmarshalRaw(src []byte) error { + mn.Reset() + for len(src) > 0 { + tail, key, err := unmarshalBytesFast(src) + if err != nil { + return fmt.Errorf("cannot decode key: %s", err) + } + src = tail + + tail, value, err := unmarshalBytesFast(src) + if err != nil { + return fmt.Errorf("cannot decode value: %s", err) + } + src = tail + + if len(key) == 0 { + mn.MetricGroup = append(mn.MetricGroup[:0], value...) + } else { + mn.AddTagBytes(key, value) + } + } + return nil +} + +func marshalBytesFast(dst []byte, s []byte) []byte { + dst = encoding.MarshalUint16(dst, uint16(len(s))) + dst = append(dst, s...) + return dst +} + +func unmarshalBytesFast(src []byte) ([]byte, []byte, error) { + if len(src) < 2 { + return src, nil, fmt.Errorf("cannot decode size form src=%X; it must be at least 2 bytes", src) + } + n := encoding.UnmarshalUint16(src) + src = src[2:] + if len(src) < int(n) { + return src, nil, fmt.Errorf("too short src=%X; it must be at least %d bytes", src, n) + } + return src[n:], src[:n], nil +} + +// sortTags sorts tags in mn. +// +// Tags sorting is quite slow, so try avoiding it by caching mn +// with sorted tags. +func (mn *MetricName) sortTags() { + if len(mn.Tags) == 0 { + return + } + + cts := getCanonicalTags() + if n := len(mn.Tags) - cap(cts.tags); n > 0 { + cts.tags = append(cts.tags[:cap(cts.tags)], make([]canonicalTag, n)...) + } + dst := cts.tags[:len(mn.Tags)] + for i := range mn.Tags { + tag := &mn.Tags[i] + ct := &dst[i] + ct.key = normalizeTagKey(tag.Key) + ct.tag.copyFrom(tag) + } + cts.tags = dst + + // Use sort.Sort instead of sort.Slice, since sort.Slice allocates a lot. + sort.Sort(&cts.tags) + + for i := range cts.tags { + mn.Tags[i].copyFrom(&cts.tags[i].tag) + } + + putCanonicalTags(cts) +} + +func getCanonicalTags() *canonicalTags { + v := canonicalTagsPool.Get() + if v == nil { + return &canonicalTags{} + } + return v.(*canonicalTags) +} + +func putCanonicalTags(cts *canonicalTags) { + cts.tags = cts.tags[:0] + canonicalTagsPool.Put(cts) +} + +var canonicalTagsPool sync.Pool + +type canonicalTags struct { + tags canonicalTagsSort +} + +type canonicalTag struct { + key []byte + tag Tag +} + +type canonicalTagsSort []canonicalTag + +func (ts *canonicalTagsSort) Len() int { return len(*ts) } +func (ts *canonicalTagsSort) Less(i, j int) bool { + x := *ts + return string(x[i].key) < string(x[j].key) +} +func (ts *canonicalTagsSort) Swap(i, j int) { + x := *ts + x[i], x[j] = x[j], x[i] +} + +func marshalTags(dst []byte, tags []Tag) []byte { + for i := range tags { + dst = tags[i].Marshal(dst) + } + return dst +} + +func copyTags(dst, src []Tag) []Tag { + dstLen := len(dst) + if n := dstLen + len(src) - cap(dst); n > 0 { + dst = append(dst[:cap(dst)], make([]Tag, n)...) + } + dst = dst[:dstLen+len(src)] + for i := range src { + dst[dstLen+i].copyFrom(&src[i]) + } + return dst +} + +func (mn *MetricName) tagsLess(i, j int) bool { + a, b := mn.Tags[i].Key, mn.Tags[j].Key + a = normalizeTagKey(a) + b = normalizeTagKey(b) + return bytes.Compare(a, b) < 0 +} + +var commonTagKeys = func() map[string][]byte { + lcm := map[string][]byte{ + // job-like tags must go first in MetricName.Tags. + // This should improve data locality. + // They start with \x00\x00. + // Do not change values! + // + // TODO: add more job-like tags. + "namespace": []byte("\x00\x00\x00"), + "ns": []byte("\x00\x00\x01"), + "datacenter": []byte("\x00\x00\x08"), + "dc": []byte("\x00\x00\x09"), + "environment": []byte("\x00\x00\x0c"), + "env": []byte("\x00\x00\x0d"), + "cluster": []byte("\x00\x00\x10"), + "service": []byte("\x00\x00\x18"), + "job": []byte("\x00\x00\x20"), + "model": []byte("\x00\x00\x28"), + "type": []byte("\x00\x00\x30"), + "sensor_type": []byte("\x00\x00\x38"), + "SensorType": []byte("\x00\x00\x38"), + "db": []byte("\x00\x00\x40"), + + // instance-like tags must go second in MetricName.Tags. + // This should improve data locality. + // They start with \x00\x01. + // Do not change values! + // + // TODO: add more instance-like tags. + "instance": []byte("\x00\x01\x00"), + "host": []byte("\x00\x01\x08"), + "server": []byte("\x00\x01\x10"), + "pod": []byte("\x00\x01\x18"), + "node": []byte("\x00\x01\x20"), + "device": []byte("\x00\x01\x28"), + "tenant": []byte("\x00\x01\x30"), + "client": []byte("\x00\x01\x38"), + "name": []byte("\x00\x01\x40"), + "measurement": []byte("\x00\x01\x48"), + } + + // Generate Upper-case variants of lc + m := make(map[string][]byte, len(lcm)*2) + for k, v := range lcm { + s := strings.ToUpper(k[:1]) + k[1:] + m[k] = v + m[s] = v + } + return m +}() + +func normalizeTagKey(key []byte) []byte { + tagKey := commonTagKeys[string(key)] + if tagKey == nil { + return key + } + return tagKey +} diff --git a/lib/storage/metric_name_test.go b/lib/storage/metric_name_test.go new file mode 100644 index 000000000..65f2100f0 --- /dev/null +++ b/lib/storage/metric_name_test.go @@ -0,0 +1,118 @@ +package storage + +import ( + "fmt" + "reflect" + "testing" +) + +func TestMetricNameSortTags(t *testing.T) { + testMetricNameSortTags(t, []string{}, []string{}) + testMetricNameSortTags(t, []string{"foo"}, []string{"foo"}) + testMetricNameSortTags(t, []string{"job"}, []string{"job"}) + testMetricNameSortTags(t, []string{"server"}, []string{"server"}) + testMetricNameSortTags(t, []string{"host", "foo", "bar", "service"}, []string{"service", "host", "bar", "foo"}) + testMetricNameSortTags(t, []string{"model", "foo", "job", "host", "server", "instance"}, + []string{"job", "model", "instance", "host", "server", "foo"}) +} + +func testMetricNameSortTags(t *testing.T, tags, expectedTags []string) { + t.Helper() + + var mn MetricName + for _, t := range tags { + mn.AddTag(t, "") + } + mn.sortTags() + + resultTags := []string{} + for i := range mn.Tags { + resultTags = append(resultTags, string(mn.Tags[i].Key)) + } + if !reflect.DeepEqual(resultTags, expectedTags) { + t.Fatalf("unexpected resultTags\ngot\n%q\nwant\n%q", resultTags, expectedTags) + } +} + +func TestMetricNameMarshalUnmarshal(t *testing.T) { + for i := 0; i < 10; i++ { + for tagsCount := 0; tagsCount < 10; tagsCount++ { + var mn MetricName + for j := 0; j < tagsCount; j++ { + key := fmt.Sprintf("key_%d_%d_\x00\x01\x02", i, j) + value := fmt.Sprintf("\x02\x00\x01value_%d_%d", i, j) + mn.AddTag(key, value) + } + mn.sortTags() + data := mn.Marshal(nil) + var mn1 MetricName + if err := mn1.Unmarshal(data); err != nil { + t.Fatalf("cannot unmarshal mn %s: %s", &mn, err) + } + if !reflect.DeepEqual(&mn, &mn1) { + t.Fatalf("unexpected mn unmarshaled;\ngot\n%+v\nwant\n%+v", &mn1, &mn) + } + + // Try unmarshaling MetricName without tag value. + brokenData := marshalTagValue(data, []byte("foobar")) + if err := mn1.Unmarshal(brokenData); err == nil { + t.Fatalf("expecting non-zero error when unmarshaling MetricName without tag value") + } + + // Try unmarshaling MetricName with invalid tag key. + brokenData[len(brokenData)-1] = 123 + if err := mn1.Unmarshal(brokenData); err == nil { + t.Fatalf("expecting non-zero error when unmarshaling MetricName with invalid tag key") + } + + // Try unmarshaling MetricName with invalid tag value. + brokenData = marshalTagValue(data, []byte("foobar")) + brokenData = marshalTagValue(brokenData, []byte("aaa")) + brokenData[len(brokenData)-1] = 123 + if err := mn1.Unmarshal(brokenData); err == nil { + t.Fatalf("expecting non-zero error when unmarshaling MetricName with invalid tag value") + } + } + } +} + +func TestMetricNameMarshalUnmarshalRaw(t *testing.T) { + for i := 0; i < 10; i++ { + for tagsCount := 0; tagsCount < 10; tagsCount++ { + var mn MetricName + for j := 0; j < tagsCount; j++ { + key := fmt.Sprintf("key_%d_%d_\x00\x01\x02", i, j) + value := fmt.Sprintf("\x02\x00\x01value_%d_%d", i, j) + mn.AddTag(key, value) + } + data := mn.marshalRaw(nil) + var mn1 MetricName + if err := mn1.unmarshalRaw(data); err != nil { + t.Fatalf("cannot unmarshal mn %s: %s", &mn, err) + } + if !reflect.DeepEqual(&mn, &mn1) { + t.Fatalf("unexpected mn unmarshaled;\ngot\n%+v\nwant\n%+v", &mn1, &mn) + } + + // Try unmarshaling MetricName without tag value. + brokenData := marshalTagValue(data, []byte("foobar")) + if err := mn1.unmarshalRaw(brokenData); err == nil { + t.Fatalf("expecting non-zero error when unmarshaling MetricName without tag value") + } + + // Try unmarshaling MetricName with invalid tag key. + brokenData[len(brokenData)-1] = 123 + if err := mn1.unmarshalRaw(brokenData); err == nil { + t.Fatalf("expecting non-zero error when unmarshaling MetricName with invalid tag key") + } + + // Try unmarshaling MetricName with invalid tag value. + brokenData = marshalTagValue(data, []byte("foobar")) + brokenData = marshalTagValue(brokenData, []byte("aaa")) + brokenData[len(brokenData)-1] = 123 + if err := mn1.unmarshalRaw(brokenData); err == nil { + t.Fatalf("expecting non-zero error when unmarshaling MetricName with invalid tag value") + } + } + } +} diff --git a/lib/storage/part.go b/lib/storage/part.go new file mode 100644 index 000000000..6378d3f0f --- /dev/null +++ b/lib/storage/part.go @@ -0,0 +1,273 @@ +package storage + +import ( + "fmt" + "path/filepath" + "sync" + "sync/atomic" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/filestream" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" +) + +func getMaxCachedIndexBlocksPerPart() int { + maxCachedIndexBlocksPerPartOnce.Do(func() { + n := memory.Allowed() / 1024 / 1024 / 8 + if n < 16 { + n = 16 + } + maxCachedIndexBlocksPerPart = n + }) + return maxCachedIndexBlocksPerPart +} + +var ( + maxCachedIndexBlocksPerPart int + maxCachedIndexBlocksPerPartOnce sync.Once +) + +// part represents a searchable part containing time series data. +type part struct { + ph partHeader + + // Filesystem path to the part. + // + // Empty for in-memory part. + path string + + timestampsFile fs.ReadAtCloser + valuesFile fs.ReadAtCloser + indexFile fs.ReadAtCloser + + metaindex []metaindexRow + + ibCache indexBlockCache +} + +// openFilePart opens file-based part from the given path. +func openFilePart(path string) (*part, error) { + path = filepath.Clean(path) + + var ph partHeader + if err := ph.ParseFromPath(path); err != nil { + return nil, fmt.Errorf("cannot parse path to part: %s", err) + } + + timestampsPath := path + "/timestamps.bin" + timestampsFile, err := fs.OpenReaderAt(timestampsPath) + if err != nil { + return nil, fmt.Errorf("cannot open timestamps file: %s", err) + } + + valuesPath := path + "/values.bin" + valuesFile, err := fs.OpenReaderAt(valuesPath) + if err != nil { + timestampsFile.MustClose() + return nil, fmt.Errorf("cannot open values file: %s", err) + } + + indexPath := path + "/index.bin" + indexFile, err := fs.OpenReaderAt(indexPath) + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + return nil, fmt.Errorf("cannot open index file: %s", err) + } + + metaindexPath := path + "/metaindex.bin" + metaindexFile, err := filestream.Open(metaindexPath, true) + if err != nil { + timestampsFile.MustClose() + valuesFile.MustClose() + indexFile.MustClose() + return nil, fmt.Errorf("cannot open metaindex file: %s", err) + } + + return newPart(&ph, path, metaindexFile, timestampsFile, valuesFile, indexFile) +} + +// newPart returns new part initialized with the given arguments. +// +// The returned part calls MustClose on all the files passed to newPart +// when calling part.MustClose. +func newPart(ph *partHeader, path string, metaindexReader filestream.ReadCloser, timestampsFile, valuesFile, indexFile fs.ReadAtCloser) (*part, error) { + var errors []error + metaindex, err := unmarshalMetaindexRows(nil, metaindexReader) + if err != nil { + errors = append(errors, fmt.Errorf("cannot unmarshal metaindex data: %s", err)) + } + metaindexReader.MustClose() + + p := &part{ + ph: *ph, + path: path, + timestampsFile: timestampsFile, + valuesFile: valuesFile, + indexFile: indexFile, + + metaindex: metaindex, + } + + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + err = fmt.Errorf("cannot initialize part %q: %s", p, errors[0]) + p.MustClose() + return nil, err + } + + p.ibCache.Init() + + return p, nil +} + +// String returns human-readable representation of p. +func (p *part) String() string { + if len(p.path) > 0 { + return p.path + } + return p.ph.String() +} + +// MustClose closes all the part files. +func (p *part) MustClose() { + p.timestampsFile.MustClose() + p.valuesFile.MustClose() + p.indexFile.MustClose() + + isBig := p.ph.RowsCount > maxRowsPerSmallPart + p.ibCache.Reset(isBig) +} + +type indexBlock struct { + bhs []blockHeader +} + +func getIndexBlock() *indexBlock { + v := indexBlockPool.Get() + if v == nil { + return &indexBlock{} + } + return v.(*indexBlock) +} + +func putIndexBlock(ib *indexBlock) { + ib.bhs = ib.bhs[:0] + indexBlockPool.Put(ib) +} + +var indexBlockPool sync.Pool + +type indexBlockCache struct { + m map[uint64]*indexBlock + missesMap map[uint64]uint64 + mu sync.RWMutex + + requests uint64 + misses uint64 +} + +func (ibc *indexBlockCache) Init() { + ibc.m = make(map[uint64]*indexBlock) + ibc.missesMap = make(map[uint64]uint64) + ibc.requests = 0 + ibc.misses = 0 +} + +func (ibc *indexBlockCache) Reset(isBig bool) { + if isBig { + atomic.AddUint64(&bigIndexBlockCacheRequests, ibc.requests) + atomic.AddUint64(&bigIndexBlockCacheMisses, ibc.misses) + } else { + atomic.AddUint64(&smallIndexBlockCacheRequests, ibc.requests) + atomic.AddUint64(&smallIndexBlockCacheMisses, ibc.misses) + } + // It is safe returning ibc.m itemst to the pool, since Reset must + // be called only when no other goroutines access ibc entries. + for _, ib := range ibc.m { + putIndexBlock(ib) + } + ibc.Init() +} + +var ( + bigIndexBlockCacheRequests uint64 + bigIndexBlockCacheMisses uint64 + + smallIndexBlockCacheRequests uint64 + smallIndexBlockCacheMisses uint64 +) + +func (ibc *indexBlockCache) Get(k uint64) *indexBlock { + atomic.AddUint64(&ibc.requests, 1) + + ibc.mu.RLock() + ib := ibc.m[k] + ibc.mu.RUnlock() + + if ib != nil { + return ib + } + atomic.AddUint64(&ibc.misses, 1) + ibc.mu.Lock() + ibc.missesMap[k]++ + ibc.mu.Unlock() + return nil +} + +func (ibc *indexBlockCache) Put(k uint64, ib *indexBlock) bool { + ibc.mu.Lock() + + if ibc.missesMap[k] < 2 { + // Do not store infrequently accessed ib in the cache, + // so it don't evict frequently accessed items. + ibc.mu.Unlock() + return false + } + + // Clean superflouos cache entries. + if overflow := len(ibc.m) - getMaxCachedIndexBlocksPerPart(); overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(ibc.m)) * 0.1) + for k := range ibc.m { + // Do not call putIndexBlock on ibc.m entries, since they may be used by concurrent goroutines. + delete(ibc.m, k) + overflow-- + if overflow == 0 { + break + } + } + } + if overflow := len(ibc.missesMap) - 8*getMaxCachedIndexBlocksPerPart(); overflow > 0 { + // Remove 10% of items from the cache. + overflow = int(float64(len(ibc.missesMap)) * 0.1) + for k := range ibc.missesMap { + delete(ibc.missesMap, k) + overflow-- + if overflow == 0 { + break + } + } + } + + // Store frequently requested ib in the cache. + delete(ibc.missesMap, k) + ibc.m[k] = ib + ibc.mu.Unlock() + return true +} + +func (ibc *indexBlockCache) Requests() uint64 { + return atomic.LoadUint64(&ibc.requests) +} + +func (ibc *indexBlockCache) Misses() uint64 { + return atomic.LoadUint64(&ibc.misses) +} + +func (ibc *indexBlockCache) Len() uint64 { + ibc.mu.Lock() + n := uint64(len(ibc.m)) + ibc.mu.Unlock() + return n +} diff --git a/lib/storage/part_header.go b/lib/storage/part_header.go new file mode 100644 index 000000000..8e8e95fb8 --- /dev/null +++ b/lib/storage/part_header.go @@ -0,0 +1,116 @@ +package storage + +import ( + "fmt" + "path/filepath" + "strconv" + "strings" + "time" +) + +// partHeader represents part header. +type partHeader struct { + // RowsCount is the total number of rows in the part. + RowsCount uint64 + + // BlocksCount is the total number of blocks in the part. + BlocksCount uint64 + + // MinTimestamp is the minimum timestamp in the part. + MinTimestamp int64 + + // MaxTimestamp is the maximum timestamp in the part. + MaxTimestamp int64 +} + +// String returns string representation of ph. +func (ph *partHeader) String() string { + return fmt.Sprintf("%d_%d_%s_%s", ph.RowsCount, ph.BlocksCount, toUserReadableTimestamp(ph.MinTimestamp), toUserReadableTimestamp(ph.MaxTimestamp)) +} + +func toUserReadableTimestamp(timestamp int64) string { + t := timestampToTime(timestamp) + return t.Format(userReadableTimeFormat) +} + +func fromUserReadableTimestamp(s string) (int64, error) { + t, err := time.Parse(userReadableTimeFormat, s) + if err != nil { + return 0, err + } + return timestampFromTime(t), nil +} + +const userReadableTimeFormat = "20060102150405.000" + +// Path returns a path to part header with the given prefix and suffix. +// +// Suffix must be random. +func (ph *partHeader) Path(prefix string, suffix uint64) string { + prefix = filepath.Clean(prefix) + s := ph.String() + return fmt.Sprintf("%s/%s_%016X", prefix, s, suffix) +} + +// ParseFromPath extracts ph info from the given path. +func (ph *partHeader) ParseFromPath(path string) error { + ph.Reset() + + path = filepath.Clean(path) + + // Extract encoded part name. + n := strings.LastIndexByte(path, '/') + if n < 0 { + return fmt.Errorf("cannot find encoded part name in the path %q", path) + } + partName := path[n+1:] + + // PartName must have the following form: + // RowsCount_BlocksCount_MinTimestamp_MaxTimestamp_Garbage + a := strings.Split(partName, "_") + if len(a) != 5 { + return fmt.Errorf("unexpected number of substrings in the part name %q: got %d; want %d", partName, len(a), 5) + } + + var err error + + ph.RowsCount, err = strconv.ParseUint(a[0], 10, 64) + if err != nil { + return fmt.Errorf("cannot parse rowsCount from partName %q: %s", partName, err) + } + ph.BlocksCount, err = strconv.ParseUint(a[1], 10, 64) + if err != nil { + return fmt.Errorf("cannot parse blocksCount from partName %q: %s", partName, err) + } + ph.MinTimestamp, err = fromUserReadableTimestamp(a[2]) + if err != nil { + return fmt.Errorf("cannot parse minTimestamp from partName %q: %s", partName, err) + } + ph.MaxTimestamp, err = fromUserReadableTimestamp(a[3]) + if err != nil { + return fmt.Errorf("cannot parse maxTimestamp from partName %q: %s", partName, err) + } + + if ph.MinTimestamp > ph.MaxTimestamp { + return fmt.Errorf("minTimestamp cannot exceed maxTimestamp; got %d vs %d", ph.MinTimestamp, ph.MaxTimestamp) + } + if ph.RowsCount <= 0 { + return fmt.Errorf("rowsCount must be greater than 0; got %d", ph.RowsCount) + } + if ph.BlocksCount <= 0 { + return fmt.Errorf("blocksCount must be greater than 0; got %d", ph.BlocksCount) + } + if ph.BlocksCount > ph.RowsCount { + return fmt.Errorf("blocksCount cannot be bigger than rowsCount; got blocksCount=%d, rowsCount=%d", ph.BlocksCount, ph.RowsCount) + } + + return nil +} + +// Reset resets the ph. +func (ph *partHeader) Reset() { + ph.RowsCount = 0 + ph.BlocksCount = 0 + ph.MinTimestamp = (1 << 63) - 1 + ph.MaxTimestamp = -1 << 63 +} diff --git a/lib/storage/part_header_test.go b/lib/storage/part_header_test.go new file mode 100644 index 000000000..a4c20c0b1 --- /dev/null +++ b/lib/storage/part_header_test.go @@ -0,0 +1,62 @@ +package storage + +import ( + "testing" +) + +func TestPartHeaderParseFromPath(t *testing.T) { + testParseFromPathError := func(path string) { + t.Helper() + + var ph partHeader + if err := ph.ParseFromPath(path); err == nil { + t.Fatalf("expecting non-nil error") + } + } + + t.Run("Error", func(t *testing.T) { + testParseFromPathError("") + testParseFromPathError("foobar") + testParseFromPathError("/foo/bar") + testParseFromPathError("/rowscount_mintimestamp_maxtimestamp_garbage") + testParseFromPathError("/rowscount_mintimestamp_maxtimestamp_garbage") + testParseFromPathError("/12_3456_mintimestamp_maxtimestamp_garbage") + testParseFromPathError("/12_3456_20181011010203.456_maxtimestamp_garbage") + testParseFromPathError("/12_3456_20181011010203.456_20181011010202.456_garbage") + testParseFromPathError("12_3456_20181011010203.456_20181011010203.457_garbage") + testParseFromPathError("12_3456_20181011010203.456_20181011010203.457_garbage/") + + // MinTimestamp > MaxTimetamp + testParseFromPathError("1233_456_20181011010203.456_20181011010202.457_garbage") + + // Zero rowsCount + testParseFromPathError("0_123_20181011010203.456_20181011010203.457_garbage") + + // Zero blocksCount + testParseFromPathError("123_0_20181011010203.456_20181011010203.457_garbage") + + // blocksCount > rowsCount + testParseFromPathError("123_456_20181011010203.456_20181011010203.457_garbage") + }) + + testParseFromPathSuccess := func(path string, phStringExpected string) { + t.Helper() + + var ph partHeader + if err := ph.ParseFromPath(path); err != nil { + t.Fatalf("unexpected error when parsing path %q: %s", path, err) + } + phString := ph.String() + if phString != phStringExpected { + t.Fatalf("unexpected partHeader string for path %q: got %q; want %q", path, phString, phStringExpected) + } + } + + t.Run("Success", func(t *testing.T) { + testParseFromPathSuccess("/1233_456_20181011010203.456_20181011010203.457_garbage", "1233_456_20181011010203.456_20181011010203.457") + testParseFromPathSuccess("/1233_456_20181011010203.456_20181011010203.457_garbage/", "1233_456_20181011010203.456_20181011010203.457") + testParseFromPathSuccess("/1233_456_20181011010203.456_20181011010203.457_garbage///", "1233_456_20181011010203.456_20181011010203.457") + testParseFromPathSuccess("/var/lib/tsdb/1233_456_20181011010203.456_20181011010203.457_garbage///", "1233_456_20181011010203.456_20181011010203.457") + testParseFromPathSuccess("/var/lib/tsdb/456_456_20181011010203.456_20181011010203.457_232345///", "456_456_20181011010203.456_20181011010203.457") + }) +} diff --git a/lib/storage/part_search.go b/lib/storage/part_search.go new file mode 100644 index 000000000..cfbac8cf0 --- /dev/null +++ b/lib/storage/part_search.go @@ -0,0 +1,291 @@ +package storage + +import ( + "fmt" + "io" + "sort" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// partSearch represents blocks stream for the given search args +// passed to Init. +type partSearch struct { + // Block contains the found block after NextBlock call. + Block Block + + // p is the part to search. + p *part + + // tsids contains sorted tsids to search. + tsids []TSID + + // tsidIdx points to the currently searched tsid in tsids. + tsidIdx int + + // tr is a time range to search. + tr TimeRange + + metaindex []metaindexRow + + ibCache *indexBlockCache + + bhs []blockHeader + + // Pointer to index block, which may be reused + indexBlockReuse *indexBlock + + compressedIndexBuf []byte + indexBuf []byte + + err error +} + +func (ps *partSearch) reset() { + ps.Block.Reset() + ps.p = nil + ps.tsids = ps.tsids[:0] + ps.tsidIdx = 0 + ps.metaindex = nil + ps.ibCache = nil + ps.bhs = nil + if ps.indexBlockReuse != nil { + putIndexBlock(ps.indexBlockReuse) + ps.indexBlockReuse = nil + } + ps.compressedIndexBuf = ps.compressedIndexBuf[:0] + ps.indexBuf = ps.indexBuf[:0] + ps.err = nil +} + +// Init initializes the ps with the given p, tsids and tr. +func (ps *partSearch) Init(p *part, tsids []TSID, tr TimeRange) { + ps.reset() + ps.p = p + + if p.ph.MinTimestamp <= tr.MaxTimestamp && p.ph.MaxTimestamp >= tr.MinTimestamp { + if !sort.SliceIsSorted(tsids, func(i, j int) bool { return tsids[i].Less(&tsids[j]) }) { + logger.Panicf("BUG: tsids must be sorted; got %+v", tsids) + } + ps.tsids = append(ps.tsids[:0], tsids...) + } + ps.tr = tr + ps.metaindex = p.metaindex + ps.ibCache = &p.ibCache + + // Advance to the first tsid. There is no need in checking + // the returned result, since it will be checked in NextBlock. + ps.nextTSID() +} + +// NextBlock advances to the next Block. +// +// Returns true on success. +// +// The blocks are sorted by (TDIS, MinTimestamp). Two subsequent blocks +// for the same TSID may contain overlapped time ranges. +func (ps *partSearch) NextBlock() bool { + for { + if ps.err != nil { + return false + } + if len(ps.bhs) == 0 { + if !ps.nextBHS() { + return false + } + } + if ps.searchBHS() { + return true + } + } +} + +// Error returns the last error. +func (ps *partSearch) Error() error { + if ps.err == io.EOF { + return nil + } + return ps.err +} + +func (ps *partSearch) nextTSID() bool { + if ps.tsidIdx >= len(ps.tsids) { + ps.err = io.EOF + return false + } + ps.Block.bh.TSID = ps.tsids[ps.tsidIdx] + ps.tsidIdx++ + return true +} + +func (ps *partSearch) nextBHS() bool { + for len(ps.metaindex) > 0 { + // Optimization: skip tsid values smaller than the minimum value + // from ps.metaindex. + for ps.Block.bh.TSID.Less(&ps.metaindex[0].TSID) { + if !ps.nextTSID() { + return false + } + } + // Invariant: ps.Block.bh.TSID >= ps.metaindex[0].TSID + + ps.metaindex = skipSmallMetaindexRows(ps.metaindex, &ps.Block.bh.TSID) + // Invariant: len(ps.metaindex) > 0 && ps.Block.bh.TSID >= ps.metaindex[0].TSID + + mr := &ps.metaindex[0] + ps.metaindex = ps.metaindex[1:] + if ps.Block.bh.TSID.Less(&mr.TSID) { + logger.Panicf("BUG: invariant violation: ps.Block.bh.TSID cannot be smaller than mr.TSID; got %+v vs %+v", &ps.Block.bh.TSID, &mr.TSID) + } + + if mr.MaxTimestamp < ps.tr.MinTimestamp { + // Skip mr with too small timestamps. + continue + } + if mr.MinTimestamp > ps.tr.MaxTimestamp { + // Skip mr with too big timestamps. + continue + } + + // Found the index block which may contain the required data + // for the ps.Block.bh.TSID and the given timestamp range. + if ps.indexBlockReuse != nil { + putIndexBlock(ps.indexBlockReuse) + ps.indexBlockReuse = nil + } + indexBlockKey := mr.IndexBlockOffset + ib := ps.ibCache.Get(indexBlockKey) + if ib == nil { + // Slow path - actually read and unpack the index block. + var err error + ib, err = ps.readIndexBlock(mr) + if err != nil { + ps.err = fmt.Errorf("cannot read index block for part %q at offset %d with size %d: %s", + &ps.p.ph, mr.IndexBlockOffset, mr.IndexBlockSize, err) + return false + } + if ok := ps.ibCache.Put(indexBlockKey, ib); !ok { + ps.indexBlockReuse = ib + } + } + ps.bhs = ib.bhs + return true + } + + // No more metaindex rows to search. + ps.err = io.EOF + return false +} + +func skipSmallMetaindexRows(metaindex []metaindexRow, tsid *TSID) []metaindexRow { + // Invariant: len(metaindex) > 0 && tsid >= metaindex[0].TSID. + if tsid.Less(&metaindex[0].TSID) { + logger.Panicf("BUG: invariant violation: tsid cannot be smaller than metaindex[0]; got %+v vs %+v", tsid, &metaindex[0].TSID) + } + + if tsid.MetricID == metaindex[0].TSID.MetricID { + return metaindex + } + + // Invariant: tsid > metaindex[0].TSID, so sort.Search cannot return 0. + n := sort.Search(len(metaindex), func(i int) bool { + return !metaindex[i].TSID.Less(tsid) + }) + if n == 0 { + logger.Panicf("BUG: invariant violation: sort.Search returned 0 for tsid > metaindex[0].TSID; tsid=%+v; metaindex[0].TSID=%+v", + tsid, &metaindex[0].TSID) + } + + // The given tsid may be located in the previous metaindex row, + // so go to the previous row. + // Suppose the following metaindex rows exist [tsid10, tsid20, tsid30]. + // The following table contains the corresponding rows to start search for + // for the given tsid values greater than tsid10: + // + // * tsid11 -> tsid10 + // * tsid20 -> tsid10, since tsid20 items may present in the index block [tsid10...tsid20] + // * tsid21 -> tsid20 + // * tsid30 -> tsid20 + // * tsid99 -> tsid30, since tsid99 items may be present in the index block [tsid30...tsidInf] + return metaindex[n-1:] +} + +func (ps *partSearch) readIndexBlock(mr *metaindexRow) (*indexBlock, error) { + ps.compressedIndexBuf = bytesutil.Resize(ps.compressedIndexBuf[:0], int(mr.IndexBlockSize)) + ps.p.indexFile.ReadAt(ps.compressedIndexBuf, int64(mr.IndexBlockOffset)) + + var err error + ps.indexBuf, err = encoding.DecompressZSTD(ps.indexBuf[:0], ps.compressedIndexBuf) + if err != nil { + return nil, fmt.Errorf("cannot decompress index block: %s", err) + } + ib := getIndexBlock() + ib.bhs, err = unmarshalBlockHeaders(ib.bhs[:0], ps.indexBuf, int(mr.BlockHeadersCount)) + if err != nil { + return nil, fmt.Errorf("cannot unmarshal index block: %s", err) + } + return ib, nil +} + +func (ps *partSearch) searchBHS() bool { + for i := range ps.bhs { + bh := &ps.bhs[i] + + nextTSID: + if bh.TSID.Less(&ps.Block.bh.TSID) { + // Skip blocks with small tsid values. + continue + } + + // Invariant: ps.Block.bh.TSID <= bh.TSID + + if bh.TSID.MetricID != ps.Block.bh.TSID.MetricID { + // ps.Block.bh.TSID < bh.TSID: no more blocks with the given tsid. + // Proceed to the next (bigger) tsid. + if !ps.nextTSID() { + return false + } + goto nextTSID + } + + // Found the block with the given tsid. Verify timestamp range. + // While blocks for the same TSID are sorted by MinTimestamp, + // the may contain overlapped time ranges. + // So use linear search instead of binary search. + if bh.MaxTimestamp < ps.tr.MinTimestamp { + // Skip the block with too small timestamps. + continue + } + if bh.MinTimestamp > ps.tr.MaxTimestamp { + // Proceed to the next tsid, since the remaining blocks + // for the current tsid contain too big timestamps. + if !ps.nextTSID() { + return false + } + continue + } + + // Found the tsid block with the matching timestamp range. + // Read it. + ps.readBlock(bh) + + ps.bhs = ps.bhs[i+1:] + return true + } + + ps.bhs = nil + return false +} + +func (ps *partSearch) readBlock(bh *blockHeader) { + ps.Block.Reset() + ps.Block.timestampsData = bytesutil.Resize(ps.Block.timestampsData[:0], int(bh.TimestampsBlockSize)) + ps.p.timestampsFile.ReadAt(ps.Block.timestampsData, int64(bh.TimestampsBlockOffset)) + + ps.Block.valuesData = bytesutil.Resize(ps.Block.valuesData[:0], int(bh.ValuesBlockSize)) + ps.p.valuesFile.ReadAt(ps.Block.valuesData, int64(bh.ValuesBlockOffset)) + + ps.Block.bh = *bh +} diff --git a/lib/storage/part_search_test.go b/lib/storage/part_search_test.go new file mode 100644 index 000000000..a56f04f01 --- /dev/null +++ b/lib/storage/part_search_test.go @@ -0,0 +1,1431 @@ +package storage + +import ( + "fmt" + "math/rand" + "reflect" + "sort" + "testing" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" +) + +func TestPartSearchOneRow(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + r.TSID.MetricID = 1234 + r.Timestamp = 100 + r.Value = 345 + rows = append(rows, r) + + p := newTestPart(rows) + + t.Run("EmptyTSID", func(t *testing.T) { + tsids1 := []TSID{} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 3000, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + }) + + t.Run("LowerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 10}} + tsids2 := []TSID{{MetricID: 10}, {MetricID: 20}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -1000, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("HigherTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 12345}} + tsids2 := []TSID{{MetricID: 12345}, {MetricID: 12346}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -1000, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("LowerAndHihgerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 10}, {MetricID: 12345}} + tsids2 := []TSID{{MetricID: 10}, {MetricID: 20}, {MetricID: 12345}, {MetricID: 12346}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -1000, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("MatchingOneTSID", func(t *testing.T) { + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + + tsids1 := []TSID{{MetricID: 1234}} + tsids2 := []TSID{{MetricID: 1234}, {MetricID: 12345}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 1234}} + tsids4 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -1000, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("InvalidTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: -2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + }) + + t.Run("MatchingMultiTSID", func(t *testing.T) { + // Results for duplicate tsids must be skipped. + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + + tsids1 := []TSID{{MetricID: 1234}, {MetricID: 1234}} + tsids2 := []TSID{{MetricID: 1234}, {MetricID: 1234}, {MetricID: 12345}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 1234}} + tsids4 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 1234}, {MetricID: 1234}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -1000, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + }) +} + +func TestPartSearchTwoRowsOneTSID(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + r.TSID.MetricID = 1234 + + r.Timestamp = 100 + r.Value = 345 + rows = append(rows, r) + + r.Timestamp = 200 + r.Value = 456 + rows = append(rows, r) + + p := newTestPart(rows) + + t.Run("EmptyTSID", func(t *testing.T) { + tsids1 := []TSID{} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 10, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + }) + + t.Run("LowerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 10}} + tsids2 := []TSID{{MetricID: 10}, {MetricID: 20}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 10, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("HigherTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 12345}} + tsids2 := []TSID{{MetricID: 12345}, {MetricID: 12346}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 10, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("LowerAndHihgerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 10}, {MetricID: 12345}} + tsids2 := []TSID{{MetricID: 10}, {MetricID: 20}, {MetricID: 12345}, {MetricID: 12346}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 10, + MaxTimestamp: 300, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("MatchingOneTSID", func(t *testing.T) { + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100, 200}, + Values: []float64{345, 456}, + }} + + tsids1 := []TSID{{MetricID: 1234}} + tsids2 := []TSID{{MetricID: 1234}, {MetricID: 12345}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 1234}} + tsids4 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 2000, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 200, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerEndTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerIntersectTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 60, + MaxTimestamp: 150, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("HigherEndTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 200, + MaxTimestamp: 200, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{200}, + Values: []float64{456}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("HigherIntersectTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 150, + MaxTimestamp: 240, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{200}, + Values: []float64{456}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("IvalidTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 200, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("InnerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 101, + MaxTimestamp: 199, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + }) +} + +func TestPartSearchTwoRowsTwoTSID(t *testing.T) { + var rows []rawRow + var r rawRow + r.PrecisionBits = defaultPrecisionBits + + r.TSID.MetricID = 1234 + r.Timestamp = 100 + r.Value = 345 + rows = append(rows, r) + + r.TSID.MetricID = 2345 + r.Timestamp = 200 + r.Value = 456 + rows = append(rows, r) + + p := newTestPart(rows) + + t.Run("EmptyTSID", func(t *testing.T) { + tsids1 := []TSID{} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + }) + }) + + t.Run("LowerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 10}} + tsids2 := []TSID{{MetricID: 10}, {MetricID: 20}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("HigherTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 12345}} + tsids2 := []TSID{{MetricID: 12345}, {MetricID: 12346}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("LowerAndHihgerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 10}, {MetricID: 12345}} + tsids2 := []TSID{{MetricID: 10}, {MetricID: 20}, {MetricID: 12345}, {MetricID: 12346}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 1235}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + }) + }) + + t.Run("InnerTSID", func(t *testing.T) { + tsids1 := []TSID{{MetricID: 1235}} + tsids2 := []TSID{{MetricID: 1235}, {MetricID: 1236}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + }) + }) + + t.Run("MatchingSmallerTSID", func(t *testing.T) { + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + + tsids1 := []TSID{{MetricID: 1234}} + tsids2 := []TSID{{MetricID: 1234}, {MetricID: 1235}, {MetricID: 12345}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 1234}} + tsids4 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + }) + + t.Run("MatchingBiggerTSID", func(t *testing.T) { + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 2345, + }, + Timestamps: []int64{200}, + Values: []float64{456}, + }} + + tsids1 := []TSID{{MetricID: 2345}} + tsids2 := []TSID{{MetricID: 2345}, {MetricID: 2346}, {MetricID: 12345}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 2345}} + tsids4 := []TSID{{MetricID: 10}, {MetricID: 2345}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 200, + MaxTimestamp: 200, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + }) + + t.Run("MatchingTwoTSIDs", func(t *testing.T) { + rbs := []rawBlock{ + { + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }, + { + TSID: TSID{ + MetricID: 2345, + }, + Timestamps: []int64{200}, + Values: []float64{456}, + }, + } + + tsids1 := []TSID{{MetricID: 1234}, {MetricID: 2345}} + tsids2 := []TSID{{MetricID: 1234}, {MetricID: 2345}, {MetricID: 2346}, {MetricID: 12345}} + tsids3 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 2345}} + tsids4 := []TSID{{MetricID: 10}, {MetricID: 1234}, {MetricID: 1235}, {MetricID: 2345}, {MetricID: 12345}} + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -100, + MaxTimestamp: 1000, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 200, + } + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerEndTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 100, + MaxTimestamp: 100, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("LowerIntersectTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 90, + MaxTimestamp: 150, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 1234, + }, + Timestamps: []int64{100}, + Values: []float64{345}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("HigherEndTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 200, + MaxTimestamp: 200, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 2345, + }, + Timestamps: []int64{200}, + Values: []float64{456}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("HigherIntersectTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 170, + MaxTimestamp: 250, + } + rbs := []rawBlock{{ + TSID: TSID{ + MetricID: 2345, + }, + Timestamps: []int64{200}, + Values: []float64{456}, + }} + testPartSearch(t, p, tsids1, tr, rbs) + testPartSearch(t, p, tsids2, tr, rbs) + testPartSearch(t, p, tsids3, tr, rbs) + testPartSearch(t, p, tsids4, tr, rbs) + }) + + t.Run("IvalidTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 201, + MaxTimestamp: 99, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("InnerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 101, + MaxTimestamp: 199, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("LowerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: -2e6, + MaxTimestamp: -1e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + + t.Run("HigherTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: 1e6, + MaxTimestamp: 2e6, + } + testPartSearch(t, p, tsids1, tr, []rawBlock{}) + testPartSearch(t, p, tsids2, tr, []rawBlock{}) + testPartSearch(t, p, tsids3, tr, []rawBlock{}) + testPartSearch(t, p, tsids4, tr, []rawBlock{}) + }) + }) +} + +func TestPartSearchMultiRowsOneTSID(t *testing.T) { + for rowsCount := 1; rowsCount <= 1e5; rowsCount *= 10 { + t.Run(fmt.Sprintf("Rows%d", rowsCount), func(t *testing.T) { + testPartSearchMultiRowsOneTSID(t, rowsCount) + }) + } +} + +func testPartSearchMultiRowsOneTSID(t *testing.T, rowsCount int) { + t.Helper() + + var rows []rawRow + var r rawRow + r.PrecisionBits = 24 + r.TSID.MetricID = 1111 + for i := 0; i < rowsCount; i++ { + r.Timestamp = int64(rand.NormFloat64() * 1e6) + r.Value = float64(int(rand.NormFloat64() * 1e5)) + rows = append(rows, r) + } + + tsids := []TSID{{MetricID: 1111}} + tr := TimeRange{ + MinTimestamp: -1e5, + MaxTimestamp: 1e5, + } + expectedRawBlocks := getTestExpectedRawBlocks(rows, tsids, tr) + p := newTestPart(rows) + + testPartSearch(t, p, tsids, tr, expectedRawBlocks) +} + +func TestPartSearchMultiRowsMultiTSIDs(t *testing.T) { + for rowsCount := 1; rowsCount <= 1e5; rowsCount *= 10 { + t.Run(fmt.Sprintf("Rows%d", rowsCount), func(t *testing.T) { + for tsidsCount := 1; tsidsCount <= rowsCount; tsidsCount *= 10 { + t.Run(fmt.Sprintf("TSIDs%d", tsidsCount), func(t *testing.T) { + testPartSearchMultiRowsMultiTSIDs(t, rowsCount, tsidsCount) + }) + } + }) + } +} + +func testPartSearchMultiRowsMultiTSIDs(t *testing.T, rowsCount, tsidsCount int) { + t.Helper() + + var rows []rawRow + var r rawRow + r.PrecisionBits = 24 + for i := 0; i < rowsCount; i++ { + r.TSID.MetricID = uint64(rand.Intn(tsidsCount)) + r.Timestamp = int64(rand.NormFloat64() * 1e6) + r.Value = float64(int(rand.NormFloat64() * 1e5)) + rows = append(rows, r) + } + + var tsids []TSID + var tsid TSID + for i := 0; i < 100; i++ { + tsid.MetricID = uint64(rand.Intn(tsidsCount * 3)) + tsids = append(tsids, tsid) + } + sort.Slice(tsids, func(i, j int) bool { return tsids[i].Less(&tsids[j]) }) + tr := TimeRange{ + MinTimestamp: -1e5, + MaxTimestamp: 1e5, + } + expectedRawBlocks := getTestExpectedRawBlocks(rows, tsids, tr) + p := newTestPart(rows) + + testPartSearch(t, p, tsids, tr, expectedRawBlocks) +} + +func testPartSearch(t *testing.T, p *part, tsids []TSID, tr TimeRange, expectedRawBlocks []rawBlock) { + t.Helper() + + if err := testPartSearchSerial(p, tsids, tr, expectedRawBlocks); err != nil { + t.Fatalf("unexpected error in serial part search: %s", err) + } + + // Run concurrent part search. + ch := make(chan error, 5) + for i := 0; i < cap(ch); i++ { + go func() { + err := testPartSearchSerial(p, tsids, tr, expectedRawBlocks) + ch <- err + }() + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error in concurrent part search: %s", err) + } + case <-time.After(time.Second): + t.Fatalf("timeout in concurrent part search") + } + } +} + +func testPartSearchSerial(p *part, tsids []TSID, tr TimeRange, expectedRawBlocks []rawBlock) error { + var ps partSearch + ps.Init(p, tsids, tr) + var bs []Block + for ps.NextBlock() { + var b Block + b.CopyFrom(&ps.Block) + bs = append(bs, b) + } + if err := ps.Error(); err != nil { + return fmt.Errorf("unexpected error in search: %s", err) + } + + if bs == nil { + bs = []Block{} + } + rbs := newTestRawBlocks(bs, tr) + if err := testEqualRawBlocks(rbs, expectedRawBlocks); err != nil { + return fmt.Errorf("unequal blocks: %s", err) + } + return nil +} + +func testEqualRawBlocks(a, b []rawBlock) error { + a = newTestMergeRawBlocks(a) + b = newTestMergeRawBlocks(b) + if len(a) != len(b) { + return fmt.Errorf("blocks length mismatch: got %d; want %d", len(a), len(b)) + } + for i := range a { + rb1 := &a[i] + rb2 := &b[i] + if !reflect.DeepEqual(rb1, rb2) { + return fmt.Errorf("blocks mismatch on position %d out of %d; got\n%+v; want\n%+v", i, len(a), rb1, rb2) + } + } + return nil +} + +func newTestRawBlocks(bs []Block, tr TimeRange) []rawBlock { + rbs := make([]rawBlock, 0, len(bs)) + for i := range bs { + rb := newTestRawBlock(&bs[i], tr) + if len(rb.Values) > 0 { + rbs = append(rbs, rb) + } + } + return rbs +} + +func newTestRawBlock(b *Block, tr TimeRange) rawBlock { + if err := b.UnmarshalData(); err != nil { + panic(fmt.Errorf("cannot unmarshal block data: %s", err)) + } + var rb rawBlock + var values []int64 + for b.nextRow() { + timestamp := b.timestamps[b.nextIdx-1] + value := b.values[b.nextIdx-1] + if timestamp < tr.MinTimestamp { + continue + } + if timestamp > tr.MaxTimestamp { + break + } + rb.Timestamps = append(rb.Timestamps, timestamp) + values = append(values, value) + } + rb.TSID = b.bh.TSID + rb.Values = decimal.AppendDecimalToFloat(rb.Values[:0], values, b.bh.Scale) + return rb +} + +func newTestMergeRawBlocks(src []rawBlock) []rawBlock { + dst := make([]rawBlock, 0, len(src)) + if len(src) == 0 { + return dst + } + rb := &rawBlock{ + TSID: src[0].TSID, + } + for len(src) > 0 { + if src[0].TSID.MetricID != rb.TSID.MetricID { + sort.Sort(&rawBlockSort{rb}) + dst = append(dst, *rb) + rb = &rawBlock{ + TSID: src[0].TSID, + } + } + rb.Timestamps = append(rb.Timestamps, src[0].Timestamps...) + rb.Values = append(rb.Values, src[0].Values...) + src = src[1:] + } + sort.Sort(&rawBlockSort{rb}) + dst = append(dst, *rb) + return dst +} + +type rawBlockSort struct { + rb *rawBlock +} + +func (rbs rawBlockSort) Len() int { return len(rbs.rb.Timestamps) } +func (rbs *rawBlockSort) Less(i, j int) bool { + rb := rbs.rb + if rb.Timestamps[i] < rb.Timestamps[j] { + return true + } + if rb.Timestamps[i] > rb.Timestamps[j] { + return false + } + return rb.Values[i] < rb.Values[j] +} +func (rbs *rawBlockSort) Swap(i, j int) { + rb := rbs.rb + rb.Timestamps[i], rb.Timestamps[j] = rb.Timestamps[j], rb.Timestamps[i] + rb.Values[i], rb.Values[j] = rb.Values[j], rb.Values[i] +} + +func getTestExpectedRawBlocks(rowsOriginal []rawRow, tsids []TSID, tr TimeRange) []rawBlock { + if len(rowsOriginal) == 0 { + return []rawBlock{} + } + + rows := append([]rawRow{}, rowsOriginal...) + sort.Slice(rows, func(i, j int) bool { + a, b := &rows[i], &rows[j] + if a.TSID.Less(&b.TSID) { + return true + } + if b.TSID.Less(&a.TSID) { + return false + } + if a.Timestamp < b.Timestamp { + return true + } + if a.Timestamp > b.Timestamp { + return false + } + return a.Value < b.Value + }) + + tsidsMap := make(map[TSID]bool) + for _, tsid := range tsids { + tsidsMap[tsid] = true + } + + expectedRawBlocks := []rawBlock{} + var rb rawBlock + rb.TSID = rows[0].TSID + rowsPerBlock := 0 + for i := range rows { + r := &rows[i] + if r.TSID.MetricID != rb.TSID.MetricID || rowsPerBlock >= maxRowsPerBlock { + if tsidsMap[rb.TSID] && len(rb.Timestamps) > 0 { + var tmpRB rawBlock + tmpRB.CopyFrom(&rb) + expectedRawBlocks = append(expectedRawBlocks, tmpRB) + } + rb.Reset() + rb.TSID = r.TSID + rowsPerBlock = 0 + } + rowsPerBlock++ + if r.Timestamp < tr.MinTimestamp || r.Timestamp > tr.MaxTimestamp { + continue + } + rb.Timestamps = append(rb.Timestamps, r.Timestamp) + rb.Values = append(rb.Values, r.Value) + } + if tsidsMap[rb.TSID] && len(rb.Timestamps) > 0 { + expectedRawBlocks = append(expectedRawBlocks, rb) + } + return expectedRawBlocks +} + +func newTestPart(rows []rawRow) *part { + mp := newTestInmemoryPart(rows) + p, err := mp.NewPart() + if err != nil { + panic(fmt.Errorf("cannot create new part: %s", err)) + } + return p +} diff --git a/lib/storage/partition.go b/lib/storage/partition.go new file mode 100644 index 000000000..181c734c7 --- /dev/null +++ b/lib/storage/partition.go @@ -0,0 +1,1492 @@ +package storage + +import ( + "fmt" + "io/ioutil" + "math/bits" + "os" + "path/filepath" + "runtime" + "sort" + "strings" + "sync" + "sync/atomic" + "time" + "unsafe" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "golang.org/x/sys/unix" +) + +// The maximum number of rows in a small part. +// +// Small part merges cannot be interrupted during server stop, so this value +// must be small enough to complete a merge +// of `maxRowsPerSmallPart * defaultPartsToMerge` rows in a reasonable amount +// of time (up to a a minute). +// +// Additionally, this number limits the maximum size of small parts storage. +// Production simultation shows that the required size of the storage +// may be estimated as: +// +// maxRowsPerSmallPart * 2 * defaultPartsToMerge * mergeWorkers +// +const maxRowsPerSmallPart = 300e6 + +// The maximum number of rows per big part. +// +// This number limits the maximum time required for building big part. +// This time shouldn't exceed a few days. +const maxRowsPerBigPart = 1e12 + +// The maximum number of small parts in the partition. +const maxSmallPartsPerPartition = 256 + +// Default number of parts to merge at once. +// +// This number has been obtained empirically - it gives the lowest possible overhead. +// See appendPartsToMerge tests for details. +const defaultPartsToMerge = 15 + +// The final number of parts to merge at once. +// +// It must be smaller than defaultPartsToMerge. +// Lower value improves select performance at the cost of increased +// write amplification. +const finalPartsToMerge = 3 + +// getMaxRowsPerPartition returns the maximum number of rows that haven't been converted into parts yet. +func getMaxRawRowsPerPartition() int { + maxRawRowsPerPartitionOnce.Do(func() { + n := memory.Allowed() / 256 / int(unsafe.Sizeof(rawRow{})) + if n < 1e4 { + n = 1e4 + } + if n > 500e3 { + n = 500e3 + } + maxRawRowsPerPartition = n + }) + return maxRawRowsPerPartition +} + +var ( + maxRawRowsPerPartition int + maxRawRowsPerPartitionOnce sync.Once +) + +// The interval for flushing (converting) recent raw rows into parts, +// so they become visible to search. +const rawRowsFlushInterval = time.Second + +// The interval for flushing inmemory parts to persistent storage, +// so they survive process crash. +const inmemoryPartsFlushInterval = 5 * time.Second + +// partition represents a partition. +type partition struct { + smallPartsPath string + bigPartsPath string + + // The callack that returns deleted metric ids which must be skipped during merge. + getDeletedMetricIDs func() map[uint64]struct{} + + // Name is the name of the partition in the form YYYY_MM. + name string + + // The time range for the partition. Usually this is a whole month. + tr TimeRange + + // partsLock protects smallParts and bigParts. + partsLock sync.Mutex + + // Contains all the inmemoryPart plus file-based parts + // with small number of items (up to maxRowsCountPerSmallPart). + smallParts []*partWrapper + + // Contains file-based parts with big number of items. + bigParts []*partWrapper + + // rawRowsLock protects rawRows. + rawRowsLock sync.Mutex + + // rawRows contains recently added rows that haven't been converted into parts yet. + // + // rawRows aren't used in search for performance reasons. + rawRows []rawRow + + // rawRowsLastFlushTime is the last time rawRows are flushed. + rawRowsLastFlushTime time.Time + + mergeIdx uint64 + + snapshotLock sync.RWMutex + + stopCh chan struct{} + + smallPartsMergerWG sync.WaitGroup + bigPartsMergerWG sync.WaitGroup + rawRowsFlusherWG sync.WaitGroup + inmemoryPartsFlusherWG sync.WaitGroup + + activeBigMerges uint64 + activeSmallMerges uint64 + bigMergesCount uint64 + smallMergesCount uint64 + bigRowsMerged uint64 + smallRowsMerged uint64 + bigRowsDeleted uint64 + smallRowsDeleted uint64 + + smallAssistedMerges uint64 +} + +// partWrapper is a wrapper for the part. +type partWrapper struct { + // The part itself. + p *part + + // non-nil if the part is inmemoryPart. + mp *inmemoryPart + + // The number of references to the part. + refCount uint64 + + // Whether the part is in merge now. + isInMerge bool +} + +func (pw *partWrapper) incRef() { + atomic.AddUint64(&pw.refCount, 1) +} + +func (pw *partWrapper) decRef() { + n := atomic.AddUint64(&pw.refCount, ^uint64(0)) + if int64(n) < 0 { + logger.Panicf("BUG: pw.refCount must be bigger than 0; got %d", int64(n)) + } + if n > 0 { + return + } + + if pw.mp != nil { + putInmemoryPart(pw.mp) + pw.mp = nil + } + pw.p.MustClose() + pw.p = nil +} + +// createPartition creates new partition for the given timestamp and the given paths +// to small and big partitions. +func createPartition(timestamp int64, smallPartitionsPath, bigPartitionsPath string, getDeletedMetricIDs func() map[uint64]struct{}) (*partition, error) { + name := timestampToPartitionName(timestamp) + smallPartsPath := filepath.Clean(smallPartitionsPath) + "/" + name + bigPartsPath := filepath.Clean(bigPartitionsPath) + "/" + name + logger.Infof("creating a partition %q with smallPartsPath=%q, bigPartsPath=%q", name, smallPartsPath, bigPartsPath) + + if err := createPartitionDirs(smallPartsPath); err != nil { + return nil, fmt.Errorf("cannot create directories for small parts %q: %s", smallPartsPath, err) + } + if err := createPartitionDirs(bigPartsPath); err != nil { + return nil, fmt.Errorf("cannot create directories for big parts %q: %s", bigPartsPath, err) + } + + pt := newPartition(name, smallPartsPath, bigPartsPath, getDeletedMetricIDs) + pt.tr.fromPartitionTimestamp(timestamp) + pt.startMergeWorkers() + pt.startRawRowsFlusher() + pt.startInmemoryPartsFlusher() + + logger.Infof("partition %q has been created", name) + + return pt, nil +} + +// Drop drops all the data on the storage for the given pt. +// +// The pt must be detached from table before calling pt.Drop. +func (pt *partition) Drop() { + logger.Infof("dropping partition %q at smallPartsPath=%q, bigPartsPath=%q", pt.name, pt.smallPartsPath, pt.bigPartsPath) + + if err := os.RemoveAll(pt.smallPartsPath); err != nil { + logger.Panicf("FATAL: cannot remove small parts directory %q: %s", pt.smallPartsPath, err) + } + if err := os.RemoveAll(pt.bigPartsPath); err != nil { + logger.Panicf("FATAL: cannot remove big parts directory %q: %s", pt.bigPartsPath, err) + } + + logger.Infof("partition %q has been dropped", pt.name) +} + +// openPartition opens the existing partition from the given paths. +func openPartition(smallPartsPath, bigPartsPath string, getDeletedMetricIDs func() map[uint64]struct{}) (*partition, error) { + smallPartsPath = filepath.Clean(smallPartsPath) + bigPartsPath = filepath.Clean(bigPartsPath) + + n := strings.LastIndexByte(smallPartsPath, '/') + if n < 0 { + return nil, fmt.Errorf("cannot find partition name from smallPartsPath %q; must be in the form /path/to/smallparts/YYYY_MM", smallPartsPath) + } + name := smallPartsPath[n+1:] + + if !strings.HasSuffix(bigPartsPath, "/"+name) { + return nil, fmt.Errorf("patititon name in bigPartsPath %q doesn't match smallPartsPath %q; want %q", bigPartsPath, smallPartsPath, name) + } + + smallParts, err := openParts(smallPartsPath, bigPartsPath, smallPartsPath) + if err != nil { + return nil, fmt.Errorf("cannot open small parts from %q: %s", smallPartsPath, err) + } + bigParts, err := openParts(smallPartsPath, bigPartsPath, bigPartsPath) + if err != nil { + mustCloseParts(smallParts) + return nil, fmt.Errorf("cannot open big parts from %q: %s", bigPartsPath, err) + } + + pt := newPartition(name, smallPartsPath, bigPartsPath, getDeletedMetricIDs) + pt.smallParts = smallParts + pt.bigParts = bigParts + if err := pt.tr.fromPartitionName(name); err != nil { + return nil, fmt.Errorf("cannot obtain partition time range from smallPartsPath %q: %s", smallPartsPath, err) + } + pt.startMergeWorkers() + pt.startRawRowsFlusher() + pt.startInmemoryPartsFlusher() + + return pt, nil +} + +func newPartition(name, smallPartsPath, bigPartsPath string, getDeletedMetricIDs func() map[uint64]struct{}) *partition { + return &partition{ + name: name, + smallPartsPath: smallPartsPath, + bigPartsPath: bigPartsPath, + + getDeletedMetricIDs: getDeletedMetricIDs, + + rawRows: getRawRowsMaxSize().rows, + + mergeIdx: uint64(time.Now().UnixNano()), + stopCh: make(chan struct{}), + } +} + +// partitionMetrics contains essential metrics for the partition. +type partitionMetrics struct { + PendingRows uint64 + + BigIndexBlocksCacheSize uint64 + BigIndexBlocksCacheRequests uint64 + BigIndexBlocksCacheMisses uint64 + + SmallIndexBlocksCacheSize uint64 + SmallIndexBlocksCacheRequests uint64 + SmallIndexBlocksCacheMisses uint64 + + BigRowsCount uint64 + SmallRowsCount uint64 + + BigBlocksCount uint64 + SmallBlocksCount uint64 + + BigPartsCount uint64 + SmallPartsCount uint64 + + ActiveBigMerges uint64 + ActiveSmallMerges uint64 + + BigMergesCount uint64 + SmallMergesCount uint64 + + BigRowsMerged uint64 + SmallRowsMerged uint64 + + BigRowsDeleted uint64 + SmallRowsDeleted uint64 + + BigPartsRefCount uint64 + SmallPartsRefCount uint64 + + SmallAssistedMerges uint64 +} + +// UpdateMetrics updates m with metrics from pt. +func (pt *partition) UpdateMetrics(m *partitionMetrics) { + pt.rawRowsLock.Lock() + m.PendingRows += uint64(len(pt.rawRows)) + m.SmallRowsCount += uint64(len(pt.rawRows)) + pt.rawRowsLock.Unlock() + + pt.partsLock.Lock() + + for _, pw := range pt.bigParts { + p := pw.p + + m.BigIndexBlocksCacheSize += p.ibCache.Len() + m.BigIndexBlocksCacheRequests += p.ibCache.Requests() + m.BigIndexBlocksCacheMisses += p.ibCache.Misses() + m.BigRowsCount += p.ph.RowsCount + m.BigBlocksCount += p.ph.BlocksCount + m.BigPartsRefCount += atomic.LoadUint64(&pw.refCount) + } + + for _, pw := range pt.smallParts { + p := pw.p + + m.SmallIndexBlocksCacheSize += p.ibCache.Len() + m.SmallIndexBlocksCacheRequests += p.ibCache.Requests() + m.SmallIndexBlocksCacheMisses += p.ibCache.Misses() + m.SmallRowsCount += p.ph.RowsCount + m.SmallBlocksCount += p.ph.BlocksCount + m.SmallPartsRefCount += atomic.LoadUint64(&pw.refCount) + } + + m.BigPartsCount += uint64(len(pt.bigParts)) + m.SmallPartsCount += uint64(len(pt.smallParts)) + + pt.partsLock.Unlock() + + atomic.AddUint64(&m.BigIndexBlocksCacheRequests, atomic.LoadUint64(&bigIndexBlockCacheRequests)) + atomic.AddUint64(&m.BigIndexBlocksCacheMisses, atomic.LoadUint64(&bigIndexBlockCacheMisses)) + + atomic.AddUint64(&m.SmallIndexBlocksCacheRequests, atomic.LoadUint64(&smallIndexBlockCacheRequests)) + atomic.AddUint64(&m.SmallIndexBlocksCacheMisses, atomic.LoadUint64(&smallIndexBlockCacheMisses)) + + m.ActiveBigMerges += atomic.LoadUint64(&pt.activeBigMerges) + m.ActiveSmallMerges += atomic.LoadUint64(&pt.activeSmallMerges) + + m.BigMergesCount += atomic.LoadUint64(&pt.bigMergesCount) + m.SmallMergesCount += atomic.LoadUint64(&pt.smallMergesCount) + + m.BigRowsMerged += atomic.LoadUint64(&pt.bigRowsMerged) + m.SmallRowsMerged += atomic.LoadUint64(&pt.smallRowsMerged) + + m.BigRowsDeleted += atomic.LoadUint64(&pt.bigRowsDeleted) + m.SmallRowsDeleted += atomic.LoadUint64(&pt.smallRowsDeleted) + + m.SmallAssistedMerges += atomic.LoadUint64(&pt.smallAssistedMerges) +} + +// AddRows adds the given rows to the partition pt. +// +// All the rows must fit the partition by timestamp range +// and must have valid PrecisionBits. +func (pt *partition) AddRows(rows []rawRow) { + if len(rows) == 0 { + return + } + + // Validate all the rows. + for i := range rows { + r := &rows[i] + if !pt.HasTimestamp(r.Timestamp) { + logger.Panicf("BUG: row %+v has Timestamp outside partition %q range %+v", r, pt.smallPartsPath, &pt.tr) + } + if err := encoding.CheckPrecisionBits(r.PrecisionBits); err != nil { + logger.Panicf("BUG: row %+v has invalid PrecisionBits: %s", r, err) + } + } + + // Try adding rows. + var rrs []*rawRows + pt.rawRowsLock.Lock() + for { + capacity := cap(pt.rawRows) - len(pt.rawRows) + if capacity >= len(rows) { + // Fast path - rows fit capacity. + pt.rawRows = append(pt.rawRows, rows...) + break + } + + // Slow path - rows don't fit capacity. + // Fill rawRows to capacity and convert it to a part. + pt.rawRows = append(pt.rawRows, rows[:capacity]...) + rows = rows[capacity:] + rr := getRawRowsMaxSize() + pt.rawRows, rr.rows = rr.rows, pt.rawRows + rrs = append(rrs, rr) + pt.rawRowsLastFlushTime = time.Now() + } + pt.rawRowsLock.Unlock() + + for _, rr := range rrs { + pt.addRowsPart(rr.rows) + putRawRows(rr) + } +} + +type rawRows struct { + rows []rawRow +} + +func getRawRowsMaxSize() *rawRows { + size := getMaxRawRowsPerPartition() + return getRawRowsWithSize(size) +} + +func getRawRowsWithSize(size int) *rawRows { + p, sizeRounded := getRawRowsPool(size) + v := p.Get() + if v == nil { + return &rawRows{ + rows: make([]rawRow, 0, sizeRounded), + } + } + return v.(*rawRows) +} + +func putRawRows(rr *rawRows) { + rr.rows = rr.rows[:0] + size := cap(rr.rows) + p, _ := getRawRowsPool(size) + p.Put(rr) +} + +func getRawRowsPool(size int) (*sync.Pool, int) { + size-- + if size < 0 { + size = 0 + } + bucketIdx := 64 - bits.LeadingZeros64(uint64(size)) + if bucketIdx >= len(rawRowsPools) { + bucketIdx = len(rawRowsPools) - 1 + } + p := &rawRowsPools[bucketIdx] + sizeRounded := 1 << uint(bucketIdx) + return p, sizeRounded +} + +var rawRowsPools [19]sync.Pool + +func (pt *partition) addRowsPart(rows []rawRow) { + if len(rows) == 0 { + return + } + + mp := getInmemoryPart() + mp.InitFromRows(rows) + + // Make sure the part may be added. + if mp.ph.MinTimestamp > mp.ph.MaxTimestamp { + logger.Panicf("BUG: the part %q cannot be added to partition %q because its MinTimestamp exceeds MaxTimestamp; %d vs %d", + &mp.ph, pt.smallPartsPath, mp.ph.MinTimestamp, mp.ph.MaxTimestamp) + } + if mp.ph.MinTimestamp < pt.tr.MinTimestamp { + logger.Panicf("BUG: the part %q cannot be added to partition %q because of too small MinTimestamp; got %d; want at least %d", + &mp.ph, pt.smallPartsPath, mp.ph.MinTimestamp, pt.tr.MinTimestamp) + } + if mp.ph.MaxTimestamp > pt.tr.MaxTimestamp { + logger.Panicf("BUG: the part %q cannot be added to partition %q because of too big MaxTimestamp; got %d; want at least %d", + &mp.ph, pt.smallPartsPath, mp.ph.MaxTimestamp, pt.tr.MaxTimestamp) + } + + p, err := mp.NewPart() + if err != nil { + logger.Panicf("BUG: cannot create part from %q: %s", &mp.ph, err) + } + + pw := &partWrapper{ + p: p, + mp: mp, + refCount: 1, + } + + pt.partsLock.Lock() + pt.smallParts = append(pt.smallParts, pw) + ok := len(pt.smallParts) <= maxSmallPartsPerPartition + pt.partsLock.Unlock() + if ok { + return + } + + // The added part exceeds available limit. Help merging parts. + err = pt.mergeSmallParts(false) + if err == nil { + atomic.AddUint64(&pt.smallAssistedMerges, 1) + return + } + if err == errNothingToMerge || err == errForciblyStopped { + return + } + logger.Panicf("FATAL: cannot merge small parts: %s", err) +} + +// HasTimestamp returns true if the pt contains the given timestamp. +func (pt *partition) HasTimestamp(timestamp int64) bool { + return timestamp >= pt.tr.MinTimestamp && timestamp <= pt.tr.MaxTimestamp +} + +// GetParts appends parts snapshot to dst and returns it. +// +// The appended parts must be released with PutParts. +func (pt *partition) GetParts(dst []*partWrapper) []*partWrapper { + pt.partsLock.Lock() + for _, pw := range pt.smallParts { + pw.incRef() + } + dst = append(dst, pt.smallParts...) + for _, pw := range pt.bigParts { + pw.incRef() + } + dst = append(dst, pt.bigParts...) + pt.partsLock.Unlock() + + return dst +} + +// PutParts releases the given pws obtained via GetParts. +func (pt *partition) PutParts(pws []*partWrapper) { + for _, pw := range pws { + pw.decRef() + } +} + +// MustClose closes the pt, so the app may safely exit. +// +// The pt must be detached from table before calling pt.MustClose. +func (pt *partition) MustClose() { + close(pt.stopCh) + + logger.Infof("waiting for inmemory parts flusher to stop on %q...", pt.smallPartsPath) + startTime := time.Now() + pt.inmemoryPartsFlusherWG.Wait() + logger.Infof("inmemory parts flusher stopped in %s on %q", time.Since(startTime), pt.smallPartsPath) + + logger.Infof("waiting for raw rows flusher to stop on %q...", pt.smallPartsPath) + startTime = time.Now() + pt.rawRowsFlusherWG.Wait() + logger.Infof("raw rows flusher stopped in %s on %q", time.Since(startTime), pt.smallPartsPath) + + logger.Infof("waiting for small part mergers to stop on %q...", pt.smallPartsPath) + startTime = time.Now() + pt.smallPartsMergerWG.Wait() + logger.Infof("small part mergers stopped in %s on %q", time.Since(startTime), pt.smallPartsPath) + + logger.Infof("waiting for big part mergers to stop on %q...", pt.bigPartsPath) + startTime = time.Now() + pt.bigPartsMergerWG.Wait() + logger.Infof("big part mergers stopped in %s on %q", time.Since(startTime), pt.bigPartsPath) + + logger.Infof("flushing inmemory parts to files on %q...", pt.smallPartsPath) + startTime = time.Now() + + // Flush raw rows the last time before exit. + pt.flushRawRows(nil, true) + + // Flush inmemory parts to disk. + var pws []*partWrapper + pt.partsLock.Lock() + for _, pw := range pt.smallParts { + if pw.mp == nil { + continue + } + if pw.isInMerge { + logger.Panicf("BUG: the inmemory part %q mustn't be in merge after stopping small parts merger in the partition %q", &pw.mp.ph, pt.smallPartsPath) + } + pw.isInMerge = true + pws = append(pws, pw) + } + pt.partsLock.Unlock() + + if err := pt.mergePartsOptimal(pws); err != nil { + logger.Panicf("FATAL: cannot flush %d inmemory parts to files on %q: %s", len(pws), pt.smallPartsPath, err) + } + logger.Infof("%d inmemory parts have been flushed to files in %s on %q", len(pws), time.Since(startTime), pt.smallPartsPath) + + // Remove references to smallParts from the pt, so they may be eventually closed + // after all the seraches are done. + pt.partsLock.Lock() + smallParts := pt.smallParts + pt.smallParts = nil + pt.partsLock.Unlock() + + for _, pw := range smallParts { + pw.decRef() + } + + // Remove references to bigParts from the pt, so they may be eventually closed + // after all the searches are done. + pt.partsLock.Lock() + bigParts := pt.bigParts + pt.bigParts = nil + pt.partsLock.Unlock() + + for _, pw := range bigParts { + pw.decRef() + } +} + +func (pt *partition) startRawRowsFlusher() { + pt.rawRowsFlusherWG.Add(1) + go func() { + pt.rawRowsFlusher() + pt.rawRowsFlusherWG.Done() + }() +} + +func (pt *partition) rawRowsFlusher() { + var rawRows []rawRow + t := time.NewTimer(rawRowsFlushInterval) + for { + select { + case <-pt.stopCh: + return + case <-t.C: + t.Reset(rawRowsFlushInterval) + } + + rawRows = pt.flushRawRows(rawRows[:0], false) + } +} + +func (pt *partition) flushRawRows(newRawRows []rawRow, isFinal bool) []rawRow { + oldRawRows := newRawRows[:0] + mustFlush := false + currentTime := time.Now() + + pt.rawRowsLock.Lock() + if isFinal || currentTime.Sub(pt.rawRowsLastFlushTime) > rawRowsFlushInterval { + mustFlush = true + oldRawRows = pt.rawRows + pt.rawRows = newRawRows[:0] + pt.rawRowsLastFlushTime = currentTime + } + pt.rawRowsLock.Unlock() + + if mustFlush { + pt.addRowsPart(oldRawRows) + } + return oldRawRows +} + +func (pt *partition) startInmemoryPartsFlusher() { + pt.inmemoryPartsFlusherWG.Add(1) + go func() { + pt.inmemoryPartsFlusher() + pt.inmemoryPartsFlusherWG.Done() + }() +} + +func (pt *partition) inmemoryPartsFlusher() { + t := time.NewTimer(inmemoryPartsFlushInterval) + var pwsBuf []*partWrapper + var err error + for { + select { + case <-pt.stopCh: + return + case <-t.C: + t.Reset(inmemoryPartsFlushInterval) + } + + pwsBuf, err = pt.flushInmemoryParts(pwsBuf[:0], false) + if err != nil { + logger.Panicf("FATAL: cannot flush inmemory parts: %s", err) + } + } +} + +func (pt *partition) flushInmemoryParts(dstPws []*partWrapper, force bool) ([]*partWrapper, error) { + currentTime := time.Now() + + // Inmemory parts may present only in small parts. + pt.partsLock.Lock() + for _, pw := range pt.smallParts { + if pw.mp == nil || pw.isInMerge { + continue + } + if force || currentTime.Sub(pw.mp.creationTime) >= inmemoryPartsFlushInterval { + pw.isInMerge = true + dstPws = append(dstPws, pw) + } + } + pt.partsLock.Unlock() + + if err := pt.mergePartsOptimal(dstPws); err != nil { + return dstPws, fmt.Errorf("cannot merge %d inmemory parts: %s", len(dstPws), err) + } + return dstPws, nil +} + +func (pt *partition) mergePartsOptimal(pws []*partWrapper) error { + for len(pws) > defaultPartsToMerge { + if err := pt.mergeParts(pws[:defaultPartsToMerge], nil); err != nil { + return fmt.Errorf("cannot merge %d parts: %s", defaultPartsToMerge, err) + } + pws = pws[defaultPartsToMerge:] + } + if len(pws) > 0 { + if err := pt.mergeParts(pws, nil); err != nil { + return fmt.Errorf("cannot merge %d parts: %s", len(pws), err) + } + } + return nil +} + +var mergeWorkers = func() int { + n := runtime.GOMAXPROCS(-1) / 2 + if n <= 0 { + n = 1 + } + return n +}() + +func (pt *partition) startMergeWorkers() { + for i := 0; i < mergeWorkers; i++ { + pt.smallPartsMergerWG.Add(1) + go func() { + pt.smallPartsMerger() + pt.smallPartsMergerWG.Done() + }() + } + + for i := 0; i < mergeWorkers; i++ { + pt.bigPartsMergerWG.Add(1) + go func() { + pt.bigPartsMerger() + pt.bigPartsMergerWG.Done() + }() + } +} + +func (pt *partition) bigPartsMerger() { + if err := pt.partsMerger(pt.mergeBigParts); err != nil { + logger.Panicf("FATAL: unrecoverable error when merging big parts in the partition %q: %s", pt.bigPartsPath, err) + } +} + +func (pt *partition) smallPartsMerger() { + if err := pt.partsMerger(pt.mergeSmallParts); err != nil { + logger.Panicf("FATAL: unrecoverable error when merging small parts in the partition %q: %s", pt.smallPartsPath, err) + } +} + +const ( + minMergeSleepTime = time.Millisecond + maxMergeSleepTime = time.Second +) + +func (pt *partition) partsMerger(mergerFunc func(isFinal bool) error) error { + sleepTime := minMergeSleepTime + var lastMergeTime time.Time + isFinal := false + t := time.NewTimer(sleepTime) + for { + err := mergerFunc(isFinal) + if err == nil { + // Try merging additional parts. + sleepTime = minMergeSleepTime + lastMergeTime = time.Now() + isFinal = false + continue + } + if err == errForciblyStopped { + // The merger has been stopped. + return nil + } + if err != errNothingToMerge { + return err + } + if time.Since(lastMergeTime) > 10*time.Second { + // We have free time for merging into bigger parts. + // This should improve select performance. + lastMergeTime = time.Now() + isFinal = true + continue + } + + // Nothing to merge. Sleep for a while and try again. + sleepTime *= 2 + if sleepTime > maxMergeSleepTime { + sleepTime = maxMergeSleepTime + } + select { + case <-pt.stopCh: + return nil + case <-t.C: + t.Reset(sleepTime) + } + } +} + +func (pt *partition) maxOutPartRows() uint64 { + freeSpace := mustGetFreeDiskSpace(pt.bigPartsPath) + + // Calculate the maximum number of rows in the output merge part + // by dividing the freeSpace by the number of concurrent + // mergeWorkers for big parts. + // This assumes each row is compressed into 1 byte. Production + // simulation shows that each row usually occupies up to 0.5 bytes, + // so this is quite safe assumption. + return freeSpace / uint64(mergeWorkers) +} + +func mustGetFreeDiskSpace(path string) uint64 { + // Try obtaining the cache value at first. + freeSpaceMapLock.Lock() + defer freeSpaceMapLock.Unlock() + + e, ok := freeSpaceMap[path] + if ok && time.Since(e.updateTime) < time.Second { + // Fast path - the entry is fresh. + return e.freeSpace + } + + // Slow path. + // Determine the amount of free space on bigPartsPath. + d, err := os.Open(path) + if err != nil { + logger.Panicf("FATAL: cannot determine free disk space on %q: %s", path, err) + } + defer fs.MustClose(d) + + fd := d.Fd() + var stat unix.Statfs_t + if err := unix.Fstatfs(int(fd), &stat); err != nil { + logger.Panicf("FATAL: cannot determine free disk space on %q: %s", path, err) + } + e.freeSpace = stat.Bavail * uint64(stat.Bsize) + e.updateTime = time.Now() + freeSpaceMap[path] = e + return e.freeSpace +} + +var ( + freeSpaceMap = make(map[string]freeSpaceEntry) + freeSpaceMapLock sync.Mutex +) + +type freeSpaceEntry struct { + updateTime time.Time + freeSpace uint64 +} + +func (pt *partition) mergeBigParts(isFinal bool) error { + maxRows := pt.maxOutPartRows() + if maxRows > maxRowsPerBigPart { + maxRows = maxRowsPerBigPart + } + + pt.partsLock.Lock() + pws := getPartsToMerge(pt.bigParts, maxRows, isFinal) + pt.partsLock.Unlock() + + if len(pws) == 0 { + return errNothingToMerge + } + + atomic.AddUint64(&pt.bigMergesCount, 1) + atomic.AddUint64(&pt.activeBigMerges, 1) + err := pt.mergeParts(pws, pt.stopCh) + atomic.AddUint64(&pt.activeBigMerges, ^uint64(0)) + + return err +} + +func (pt *partition) mergeSmallParts(isFinal bool) error { + maxRows := uint64(maxRowsPerSmallPart * defaultPartsToMerge) + + pt.partsLock.Lock() + pws := getPartsToMerge(pt.smallParts, maxRows, isFinal) + pt.partsLock.Unlock() + + if len(pws) == 0 { + return errNothingToMerge + } + + atomic.AddUint64(&pt.smallMergesCount, 1) + atomic.AddUint64(&pt.activeSmallMerges, 1) + err := pt.mergeParts(pws, pt.stopCh) + atomic.AddUint64(&pt.activeSmallMerges, ^uint64(0)) + + return err +} + +var errNothingToMerge = fmt.Errorf("nothing to merge") + +func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}) error { + if len(pws) == 0 { + // Nothing to merge. + return errNothingToMerge + } + + defer func() { + // Remove isInMerge flag from pws. + pt.partsLock.Lock() + for _, pw := range pws { + if !pw.isInMerge { + logger.Panicf("BUG: missing isInMerge flag on the part %q", pw.p.path) + } + pw.isInMerge = false + } + pt.partsLock.Unlock() + }() + + startTime := time.Now() + + // Prepare BlockStreamReaders for source parts. + bsrs := make([]*blockStreamReader, 0, len(pws)) + defer func() { + for _, bsr := range bsrs { + putBlockStreamReader(bsr) + } + }() + for _, pw := range pws { + bsr := getBlockStreamReader() + if pw.mp != nil { + bsr.InitFromInmemoryPart(pw.mp) + } else { + if err := bsr.InitFromFilePart(pw.p.path); err != nil { + return fmt.Errorf("cannot open source part for merging: %s", err) + } + } + bsrs = append(bsrs, bsr) + } + + outRowsCount := uint64(0) + for _, pw := range pws { + outRowsCount += pw.p.ph.RowsCount + } + isBigPart := outRowsCount > maxRowsPerSmallPart + nocache := isBigPart + + // Prepare BlockStreamWriter for destination part. + ptPath := pt.smallPartsPath + if isBigPart { + ptPath = pt.bigPartsPath + } + ptPath = filepath.Clean(ptPath) + mergeIdx := pt.nextMergeIdx() + tmpPartPath := fmt.Sprintf("%s/tmp/%016X", ptPath, mergeIdx) + bsw := getBlockStreamWriter() + compressLevel := getCompressLevelForRowsCount(outRowsCount) + if err := bsw.InitFromFilePart(tmpPartPath, nocache, compressLevel); err != nil { + return fmt.Errorf("cannot create destination part %q: %s", tmpPartPath, err) + } + + // Merge parts. + var ph partHeader + rowsMerged := &pt.smallRowsMerged + rowsDeleted := &pt.smallRowsDeleted + if isBigPart { + rowsMerged = &pt.bigRowsMerged + rowsDeleted = &pt.bigRowsDeleted + } + dmis := pt.getDeletedMetricIDs() + err := mergeBlockStreams(&ph, bsw, bsrs, stopCh, rowsMerged, dmis, rowsDeleted) + putBlockStreamWriter(bsw) + if err != nil { + if err == errForciblyStopped { + return err + } + return fmt.Errorf("error when merging parts to %q: %s", tmpPartPath, err) + } + + // Close bsrs. + for _, bsr := range bsrs { + putBlockStreamReader(bsr) + } + bsrs = nil + + // Create a transaction for atomic deleting old parts and moving + // new part to its destination place. + var bb bytesutil.ByteBuffer + for _, pw := range pws { + if pw.mp == nil { + fmt.Fprintf(&bb, "%s\n", pw.p.path) + } + } + dstPartPath := "" + if ph.RowsCount > 0 { + // The destination part may have no rows if they are deleted + // during the merge due to dmis. + dstPartPath = ph.Path(ptPath, mergeIdx) + } + fmt.Fprintf(&bb, "%s -> %s\n", tmpPartPath, dstPartPath) + txnPath := fmt.Sprintf("%s/txn/%016X", ptPath, mergeIdx) + if err := fs.WriteFile(txnPath, bb.B); err != nil { + return fmt.Errorf("cannot create transaction file %q: %s", txnPath, err) + } + + // Run the created transaction. + if err := runTransaction(&pt.snapshotLock, pt.smallPartsPath, pt.bigPartsPath, txnPath); err != nil { + return fmt.Errorf("cannot execute transaction %q: %s", txnPath, err) + } + + var newPW *partWrapper + if len(dstPartPath) > 0 { + // Open the merged part if it is non-empty. + newP, err := openFilePart(dstPartPath) + if err != nil { + return fmt.Errorf("cannot open merged part %q: %s", dstPartPath, err) + } + newPW = &partWrapper{ + p: newP, + refCount: 1, + } + } + + // Atomically remove old parts and add new part. + m := make(map[*partWrapper]bool, len(pws)) + for _, pw := range pws { + m[pw] = true + } + if len(m) != len(pws) { + logger.Panicf("BUG: %d duplicate parts found in the merge of %d parts", len(pws)-len(m), len(pws)) + } + removedSmallParts := 0 + removedBigParts := 0 + pt.partsLock.Lock() + pt.smallParts, removedSmallParts = removeParts(pt.smallParts, m) + pt.bigParts, removedBigParts = removeParts(pt.bigParts, m) + if newPW != nil { + if isBigPart { + pt.bigParts = append(pt.bigParts, newPW) + } else { + pt.smallParts = append(pt.smallParts, newPW) + } + } + pt.partsLock.Unlock() + if removedSmallParts+removedBigParts != len(m) { + logger.Panicf("BUG: unexpected number of parts removed; got %d, want %d", removedSmallParts+removedBigParts, len(m)) + } + + // Remove partition references from old parts. + for _, pw := range pws { + pw.decRef() + } + + d := time.Since(startTime) + if d > 10*time.Second { + logger.Infof("merged %d rows in %s at %d rows/sec to %q", outRowsCount, d, int(float64(outRowsCount)/d.Seconds()), dstPartPath) + } + + return nil +} + +func getCompressLevelForRowsCount(rowsCount uint64) int { + if rowsCount <= 1<<19 { + return 1 + } + if rowsCount <= 1<<22 { + return 2 + } + if rowsCount <= 1<<25 { + return 3 + } + if rowsCount <= 1<<28 { + return 4 + } + return 5 +} + +func (pt *partition) nextMergeIdx() uint64 { + return atomic.AddUint64(&pt.mergeIdx, 1) +} + +func removeParts(pws []*partWrapper, partsToRemove map[*partWrapper]bool) ([]*partWrapper, int) { + removedParts := 0 + dst := pws[:0] + for _, pw := range pws { + if partsToRemove[pw] { + removedParts++ + continue + } + dst = append(dst, pw) + } + return dst, removedParts +} + +// getPartsToMerge returns optimal parts to merge from pws. +// +// The returned rows will contain less than maxRows rows. +func getPartsToMerge(pws []*partWrapper, maxRows uint64, isFinal bool) []*partWrapper { + pwsRemaining := make([]*partWrapper, 0, len(pws)) + for _, pw := range pws { + if !pw.isInMerge { + pwsRemaining = append(pwsRemaining, pw) + } + } + maxPartsToMerge := defaultPartsToMerge + var pms []*partWrapper + if isFinal { + for len(pms) == 0 && maxPartsToMerge >= finalPartsToMerge { + pms = appendPartsToMerge(pms[:0], pwsRemaining, maxPartsToMerge, maxRows) + maxPartsToMerge-- + } + } else { + pms = appendPartsToMerge(pms[:0], pwsRemaining, maxPartsToMerge, maxRows) + } + for _, pw := range pms { + if pw.isInMerge { + logger.Panicf("BUG: partWrapper.isInMerge cannot be set") + } + pw.isInMerge = true + } + return pms +} + +// appendPartsToMerge finds optimal parts to merge from src, appends +// them to dst and returns the result. +func appendPartsToMerge(dst, src []*partWrapper, maxPartsToMerge int, maxRows uint64) []*partWrapper { + if len(src) < 2 { + // There is no need in merging zero or one part :) + return dst + } + if maxPartsToMerge < 2 { + logger.Panicf("BUG: maxPartsToMerge cannot be smaller than 2; got %d", maxPartsToMerge) + } + + // Filter out too big parts. + // This should reduce N for O(n^2) algorithm below. + maxInPartRows := maxRows / 2 + tmp := make([]*partWrapper, 0, len(src)) + for _, pw := range src { + if pw.p.ph.RowsCount > maxInPartRows { + continue + } + tmp = append(tmp, pw) + } + src = tmp + + // Sort src parts by rows count and backwards timestamp. + // This should improve adjanced points' locality in the merged parts. + sort.Slice(src, func(i, j int) bool { + a := &src[i].p.ph + b := &src[j].p.ph + if a.RowsCount < b.RowsCount { + return true + } + if a.RowsCount > b.RowsCount { + return false + } + return a.MinTimestamp > b.MinTimestamp + }) + + n := maxPartsToMerge + if len(src) < n { + n = len(src) + } + + // Exhaustive search for parts giving the lowest write amplification + // when merged. + var pws []*partWrapper + maxM := float64(0) + for i := 2; i <= n; i++ { + for j := 0; j <= len(src)-i; j++ { + rowsSum := uint64(0) + for _, pw := range src[j : j+i] { + rowsSum += pw.p.ph.RowsCount + } + if rowsSum > maxRows { + continue + } + m := float64(rowsSum) / float64(src[j+i-1].p.ph.RowsCount) + if m < maxM { + continue + } + maxM = m + pws = src[j : j+i] + } + } + + minM := float64(maxPartsToMerge / 2) + if minM < 2 { + minM = 2 + } + if maxM < minM { + // There is no sense in merging parts with too small m. + return dst + } + + return append(dst, pws...) +} + +func openParts(pathPrefix1, pathPrefix2, path string) ([]*partWrapper, error) { + // Verify that the directory for the parts exists. + d, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("cannot open directory %q: %s", path, err) + } + defer fs.MustClose(d) + + // Run remaining transactions and cleanup /txn and /tmp directories. + // Snapshots cannot be created yet, so use fakeSnapshotLock. + var fakeSnapshotLock sync.RWMutex + if err := runTransactions(&fakeSnapshotLock, pathPrefix1, pathPrefix2, path); err != nil { + return nil, fmt.Errorf("cannot run transactions from %q: %s", path, err) + } + + txnDir := path + "/txn" + if err := os.RemoveAll(txnDir); err != nil { + return nil, fmt.Errorf("cannot delete transaction directory %q: %s", txnDir, err) + } + tmpDir := path + "/tmp" + if err := os.RemoveAll(tmpDir); err != nil { + return nil, fmt.Errorf("cannot remove temporary directory %q: %s", tmpDir, err) + } + if err := createPartitionDirs(path); err != nil { + return nil, fmt.Errorf("cannot create directories for partition %q: %s", path, err) + } + + // Open parts. + fis, err := d.Readdir(-1) + if err != nil { + return nil, fmt.Errorf("cannot read directory %q: %s", d.Name(), err) + } + var pws []*partWrapper + for _, fi := range fis { + if !fs.IsDirOrSymlink(fi) { + // Skip non-directories. + continue + } + fn := fi.Name() + if fn == "tmp" || fn == "txn" || fn == "snapshots" { + // "snapshots" dir is skipped for backwards compatibility. Now it is unused. + // Skip special dirs. + continue + } + partPath := path + "/" + fn + startTime := time.Now() + p, err := openFilePart(partPath) + if err != nil { + mustCloseParts(pws) + return nil, fmt.Errorf("cannot open part %q: %s", partPath, err) + } + d := time.Since(startTime) + logger.Infof("opened part %q in %s", partPath, d) + + pw := &partWrapper{ + p: p, + refCount: 1, + } + pws = append(pws, pw) + } + + return pws, nil +} + +func mustCloseParts(pws []*partWrapper) { + for _, pw := range pws { + if pw.refCount != 1 { + logger.Panicf("BUG: unexpected refCount when closing part %q: %d; want 1", &pw.p.ph, pw.refCount) + } + pw.p.MustClose() + } +} + +// CreateSnapshotAt creates pt snapshot at the given smallPath and bigPath dirs. +// +// Snapshot is created using linux hard links, so it is usually created +// very quickly. +func (pt *partition) CreateSnapshotAt(smallPath, bigPath string) error { + logger.Infof("creating partition snapshot of %q and %q...", pt.smallPartsPath, pt.bigPartsPath) + startTime := time.Now() + + // Flush inmemory data to disk. + pt.flushRawRows(nil, true) + if _, err := pt.flushInmemoryParts(nil, true); err != nil { + return fmt.Errorf("cannot flush inmemory parts: %s", err) + } + + // The snapshot must be created under the lock in order to prevent from + // concurrent modifications via runTransaction. + pt.snapshotLock.Lock() + defer pt.snapshotLock.Unlock() + + if err := pt.createSnapshot(pt.smallPartsPath, smallPath); err != nil { + return fmt.Errorf("cannot create snapshot for %q: %s", pt.smallPartsPath, err) + } + if err := pt.createSnapshot(pt.bigPartsPath, bigPath); err != nil { + return fmt.Errorf("cannot create snapshot for %q: %s", pt.bigPartsPath, err) + } + + logger.Infof("created partition snapshot of %q and %q at %q and %q in %s", pt.smallPartsPath, pt.bigPartsPath, smallPath, bigPath, time.Since(startTime)) + return nil +} + +func (pt *partition) createSnapshot(srcDir, dstDir string) error { + if err := fs.MkdirAllFailIfExist(dstDir); err != nil { + return fmt.Errorf("cannot create snapshot dir %q: %s", dstDir, err) + } + + d, err := os.Open(srcDir) + if err != nil { + return fmt.Errorf("cannot open difrectory: %s", err) + } + defer fs.MustClose(d) + + fis, err := d.Readdir(-1) + if err != nil { + return fmt.Errorf("cannot read directory: %s", err) + } + for _, fi := range fis { + if !fs.IsDirOrSymlink(fi) { + // Skip non-directories. + continue + } + fn := fi.Name() + if fn == "tmp" || fn == "txn" { + // Skip special dirs. + continue + } + srcPartPath := srcDir + "/" + fn + dstPartPath := dstDir + "/" + fn + if err := fs.HardLinkFiles(srcPartPath, dstPartPath); err != nil { + return fmt.Errorf("cannot create hard links from %q to %q: %s", srcPartPath, dstPartPath, err) + } + } + + fs.SyncPath(dstDir) + fs.SyncPath(filepath.Dir(dstDir)) + + return nil +} + +func runTransactions(txnLock *sync.RWMutex, pathPrefix1, pathPrefix2, path string) error { + txnDir := path + "/txn" + d, err := os.Open(txnDir) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return fmt.Errorf("cannot open %q: %s", txnDir, err) + } + defer fs.MustClose(d) + + fis, err := d.Readdir(-1) + if err != nil { + return fmt.Errorf("cannot read directory %q: %s", d.Name(), err) + } + + // Sort transaction files by id. + sort.Slice(fis, func(i, j int) bool { + return fis[i].Name() < fis[j].Name() + }) + + for _, fi := range fis { + txnPath := txnDir + "/" + fi.Name() + if err := runTransaction(txnLock, pathPrefix1, pathPrefix2, txnPath); err != nil { + return fmt.Errorf("cannot run transaction from %q: %s", txnPath, err) + } + } + return nil +} + +func runTransaction(txnLock *sync.RWMutex, pathPrefix1, pathPrefix2, txnPath string) error { + // The transaction must be run under read lock in order to provide + // consistent snapshots with partition.CreateSnapshot(). + txnLock.RLock() + defer txnLock.RUnlock() + + data, err := ioutil.ReadFile(txnPath) + if err != nil { + return fmt.Errorf("cannot read transaction file: %s", err) + } + if len(data) > 0 && data[len(data)-1] == '\n' { + data = data[:len(data)-1] + } + paths := strings.Split(string(data), "\n") + + if len(paths) == 0 { + return fmt.Errorf("empty transaction") + } + rmPaths := paths[:len(paths)-1] + mvPaths := strings.Split(paths[len(paths)-1], " -> ") + if len(mvPaths) != 2 { + return fmt.Errorf("invalid last line in the transaction file: got %q; must contain `srcPath -> dstPath`", paths[len(paths)-1]) + } + + // Remove old paths. It is OK if certain paths don't exist. + for _, path := range rmPaths { + path, err := validatePath(pathPrefix1, pathPrefix2, path) + if err != nil { + return fmt.Errorf("invalid path to remove: %s", err) + } + if err := os.RemoveAll(path); err != nil { + return fmt.Errorf("cannot remove %q: %s", path, err) + } + } + + // Move the new part to new directory. + srcPath := mvPaths[0] + dstPath := mvPaths[1] + srcPath, err = validatePath(pathPrefix1, pathPrefix2, srcPath) + if err != nil { + return fmt.Errorf("invalid source path to rename: %s", err) + } + if len(dstPath) > 0 { + // Move srcPath to dstPath. + dstPath, err = validatePath(pathPrefix1, pathPrefix2, dstPath) + if err != nil { + return fmt.Errorf("invalid destination path to rename: %s", err) + } + if fs.IsPathExist(srcPath) { + if err := os.Rename(srcPath, dstPath); err != nil { + return fmt.Errorf("cannot rename %q to %q: %s", srcPath, dstPath, err) + } + } else { + // Verify dstPath exists. + if !fs.IsPathExist(dstPath) { + return fmt.Errorf("cannot find both source and destination paths: %q -> %q", srcPath, dstPath) + } + } + } else { + // Just remove srcPath. + if err := os.RemoveAll(srcPath); err != nil { + return fmt.Errorf("cannot remove %q: %s", srcPath, err) + } + } + + // Flush pathPrefix* directory metadata to the underying storage. + fs.SyncPath(pathPrefix1) + fs.SyncPath(pathPrefix2) + + // Remove the transaction file. + if err := os.Remove(txnPath); err != nil { + return fmt.Errorf("cannot remove transaction file: %s", err) + } + + return nil +} + +func validatePath(pathPrefix1, pathPrefix2, path string) (string, error) { + var err error + + pathPrefix1, err = filepath.Abs(pathPrefix1) + if err != nil { + return path, fmt.Errorf("cannot determine absolute path for pathPrefix1=%q: %s", pathPrefix1, err) + } + pathPrefix2, err = filepath.Abs(pathPrefix2) + if err != nil { + return path, fmt.Errorf("cannot determine absolute path for pathPrefix2=%q: %s", pathPrefix2, err) + } + + path, err = filepath.Abs(path) + if err != nil { + return path, fmt.Errorf("cannot determine absolute path for %q: %s", path, err) + } + if !strings.HasPrefix(path, pathPrefix1+"/") && !strings.HasPrefix(path, pathPrefix2+"/") { + return path, fmt.Errorf("invalid path %q; must start with either %q or %q", path, pathPrefix1+"/", pathPrefix2+"/") + } + return path, nil +} + +func createPartitionDirs(path string) error { + path = filepath.Clean(path) + txnPath := path + "/txn" + if err := fs.MkdirAllFailIfExist(txnPath); err != nil { + return fmt.Errorf("cannot create txn directory %q: %s", txnPath, err) + } + tmpPath := path + "/tmp" + if err := fs.MkdirAllFailIfExist(tmpPath); err != nil { + return fmt.Errorf("cannot create tmp directory %q: %s", tmpPath, err) + } + fs.SyncPath(path) + return nil +} diff --git a/lib/storage/partition_search.go b/lib/storage/partition_search.go new file mode 100644 index 000000000..815ec3589 --- /dev/null +++ b/lib/storage/partition_search.go @@ -0,0 +1,205 @@ +package storage + +import ( + "container/heap" + "fmt" + "io" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// partitionSearch represents a search in the partition. +type partitionSearch struct { + // Block is the block found after NextBlock call. + Block *Block + + // pt is a partition to search. + pt *partition + + // pws hold parts snapshot for the given partition during Init call. + // This snapshot is used for calling Part.PutParts on partitionSearch.MustClose. + pws []*partWrapper + + psPool []partSearch + psHeap partSearchHeap + + err error + + nextBlockNoop bool + needClosing bool +} + +func (pts *partitionSearch) reset() { + pts.Block = nil + pts.pt = nil + + for i := range pts.pws { + pts.pws[i] = nil + } + pts.pws = pts.pws[:0] + + for i := range pts.psPool { + pts.psPool[i].reset() + } + pts.psPool = pts.psPool[:0] + + for i := range pts.psHeap { + pts.psHeap[i] = nil + } + pts.psHeap = pts.psHeap[:0] + + pts.err = nil + pts.nextBlockNoop = false + pts.needClosing = false +} + +// Init initializes the search in the given partition for the given tsid and tr. +// +// MustClose must be called when partition search is done. +func (pts *partitionSearch) Init(pt *partition, tsids []TSID, tr TimeRange) { + if pts.needClosing { + logger.Panicf("BUG: missing partitionSearch.MustClose call before the next call to Init") + } + + pts.reset() + pts.pt = pt + pts.needClosing = true + + if len(tsids) == 0 { + // Fast path - zero tsids. + pts.err = io.EOF + return + } + + if pt.tr.MinTimestamp > tr.MaxTimestamp || pt.tr.MaxTimestamp < tr.MinTimestamp { + // Fast path - the partition doesn't contain rows for the given time range. + pts.err = io.EOF + return + } + + pts.pws = pt.GetParts(pts.pws[:0]) + + // Initialize psPool. + if n := len(pts.pws) - cap(pts.psPool); n > 0 { + pts.psPool = append(pts.psPool[:cap(pts.psPool)], make([]partSearch, n)...) + } + pts.psPool = pts.psPool[:len(pts.pws)] + for i, pw := range pts.pws { + pts.psPool[i].Init(pw.p, tsids, tr) + } + + // Initialize the psHeap. + var errors []error + pts.psHeap = pts.psHeap[:0] + for i := range pts.psPool { + ps := &pts.psPool[i] + if !ps.NextBlock() { + if err := ps.Error(); err != nil { + errors = append(errors, err) + } + continue + } + pts.psHeap = append(pts.psHeap, ps) + } + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + pts.err = fmt.Errorf("cannot initialize partition search: %s", errors[0]) + return + } + if len(pts.psHeap) == 0 { + pts.err = io.EOF + return + } + heap.Init(&pts.psHeap) + pts.Block = &pts.psHeap[0].Block + pts.nextBlockNoop = true +} + +// NextBlock advances to the next block. +// +// The blocks are sorted by (TDIS, MinTimestamp). Two subsequent blocks +// for the same TSID may contain overlapped time ranges. +func (pts *partitionSearch) NextBlock() bool { + if pts.err != nil { + return false + } + if pts.nextBlockNoop { + pts.nextBlockNoop = false + return true + } + + pts.err = pts.nextBlock() + if pts.err != nil { + if pts.err != io.EOF { + pts.err = fmt.Errorf("cannot obtain the next block to search in the partition: %s", pts.err) + } + return false + } + return true +} + +func (pts *partitionSearch) nextBlock() error { + psMin := pts.psHeap[0] + if psMin.NextBlock() { + heap.Fix(&pts.psHeap, 0) + pts.Block = &pts.psHeap[0].Block + return nil + } + + if err := psMin.Error(); err != nil { + return err + } + + heap.Pop(&pts.psHeap) + + if len(pts.psHeap) == 0 { + return io.EOF + } + + pts.Block = &pts.psHeap[0].Block + return nil +} + +func (pts *partitionSearch) Error() error { + if pts.err == io.EOF { + return nil + } + return pts.err +} + +// MustClose closes the pts. +func (pts *partitionSearch) MustClose() { + if !pts.needClosing { + logger.Panicf("BUG: missing Init call before the MustClose call") + } + + pts.pt.PutParts(pts.pws) + pts.reset() +} + +type partSearchHeap []*partSearch + +func (psh *partSearchHeap) Len() int { + return len(*psh) +} + +func (psh *partSearchHeap) Less(i, j int) bool { + x := *psh + return x[i].Block.bh.Less(&x[j].Block.bh) +} + +func (psh *partSearchHeap) Swap(i, j int) { + x := *psh + x[i], x[j] = x[j], x[i] +} + +func (psh *partSearchHeap) Push(x interface{}) { + *psh = append(*psh, x.(*partSearch)) +} + +func (psh *partSearchHeap) Pop() interface{} { + a := *psh + v := a[len(a)-1] + *psh = a[:len(a)-1] + return v +} diff --git a/lib/storage/partition_search_test.go b/lib/storage/partition_search_test.go new file mode 100644 index 000000000..0b23ecc16 --- /dev/null +++ b/lib/storage/partition_search_test.go @@ -0,0 +1,279 @@ +package storage + +import ( + "fmt" + "math/rand" + "os" + "sort" + "testing" + "time" +) + +func TestPartitionSearch(t *testing.T) { + ptt := timestampFromTime(time.Now()) + var ptr TimeRange + ptr.fromPartitionTimestamp(ptt) + + t.Run("SinglePart", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 1, 10000, 10) + }) + + t.Run("SingleRowPerPart", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 1000, 1, 10) + }) + + t.Run("SingleTSID", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 5, 10000, 1) + }) + + t.Run("ManyParts", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 300, 300, 20) + }) + + t.Run("ManyTSIDs", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 5, 10000, 1000) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp, + MaxTimestamp: ptr.MaxTimestamp, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) + + t.Run("InnerTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) + + t.Run("OuterTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp - 1e6, + MaxTimestamp: ptr.MaxTimestamp + 1e6, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) + + t.Run("LowTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp - 2e6, + MaxTimestamp: ptr.MinTimestamp - 1e6, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) + + t.Run("HighTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MaxTimestamp + 1e6, + MaxTimestamp: ptr.MaxTimestamp + 2e6, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) + + t.Run("LowerEndTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp - 1e6, + MaxTimestamp: ptr.MaxTimestamp - 4e3, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) + + t.Run("HigherEndTimeRange", func(t *testing.T) { + tr := TimeRange{ + MinTimestamp: ptr.MinTimestamp + 4e3, + MaxTimestamp: ptr.MaxTimestamp + 1e6, + } + testPartitionSearchEx(t, ptt, tr, 5, 1000, 10) + }) +} + +func testPartitionSearchEx(t *testing.T, ptt int64, tr TimeRange, partsCount, maxRowsPerPart, tsidsCount int) { + t.Helper() + + // Generate tsids to search. + var tsids []TSID + var tsid TSID + for i := 0; i < 25; i++ { + tsid.MetricID = uint64(rand.Intn(tsidsCount * 2)) + tsids = append(tsids, tsid) + } + sort.Slice(tsids, func(i, j int) bool { return tsids[i].Less(&tsids[j]) }) + + // Generate the expected blocks. + + rowsCountExpected := int64(0) + rbsExpected := []rawBlock{} + var ptr TimeRange + ptr.fromPartitionTimestamp(ptt) + var rowss [][]rawRow + for i := 0; i < partsCount; i++ { + var rows []rawRow + var r rawRow + r.PrecisionBits = 30 + timestamp := ptr.MinTimestamp + rowsCount := 1 + rand.Intn(maxRowsPerPart) + for j := 0; j < rowsCount; j++ { + r.TSID.MetricID = uint64(rand.Intn(tsidsCount)) + r.Timestamp = timestamp + r.Value = float64(int(rand.NormFloat64() * 1e5)) + + timestamp += int64(rand.Intn(1e4)) + if timestamp > ptr.MaxTimestamp { + break + } + + rows = append(rows, r) + rowsCountExpected++ + } + rbs := getTestExpectedRawBlocks(rows, tsids, tr) + rbsExpected = append(rbsExpected, rbs...) + rowss = append(rowss, rows) + } + sort.Slice(rbsExpected, func(i, j int) bool { + a, b := rbsExpected[i], rbsExpected[j] + if a.TSID.Less(&b.TSID) { + return true + } + if b.TSID.Less(&a.TSID) { + return false + } + return a.Timestamps[0] < b.Timestamps[0] + }) + + // Create partition from rowss and test search on it. + pt, err := createPartition(ptt, "./small-table", "./big-table", nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot create partition: %s", err) + } + smallPartsPath := pt.smallPartsPath + bigPartsPath := pt.bigPartsPath + defer func() { + if err := os.RemoveAll("./small-table"); err != nil { + t.Fatalf("cannot remove small parts directory: %s", err) + } + if err := os.RemoveAll("./big-table"); err != nil { + t.Fatalf("cannot remove big parts directory: %s", err) + } + }() + for _, rows := range rowss { + pt.AddRows(rows) + + // Flush just added rows to a separate partition. + pt.flushRawRows(nil, true) + } + testPartitionSearch(t, pt, tsids, tr, rbsExpected, -1) + pt.MustClose() + + // Open the created partition and test search on it. + pt, err = openPartition(smallPartsPath, bigPartsPath, nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot open partition: %s", err) + } + testPartitionSearch(t, pt, tsids, tr, rbsExpected, rowsCountExpected) + pt.MustClose() +} + +func testPartitionSearch(t *testing.T, pt *partition, tsids []TSID, tr TimeRange, rbsExpected []rawBlock, rowsCountExpected int64) { + t.Helper() + + if err := testPartitionSearchSerial(pt, tsids, tr, rbsExpected, rowsCountExpected); err != nil { + t.Fatalf("unexpected error in serial partition search: %s", err) + } + + ch := make(chan error, 5) + for i := 0; i < cap(ch); i++ { + go func() { + ch <- testPartitionSearchSerial(pt, tsids, tr, rbsExpected, rowsCountExpected) + }() + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error in concurrent partition search: %s", err) + } + case <-time.After(time.Second): + t.Fatalf("timeout in concurrent partition search") + } + } +} + +func testPartitionSearchSerial(pt *partition, tsids []TSID, tr TimeRange, rbsExpected []rawBlock, rowsCountExpected int64) error { + if rowsCountExpected >= 0 { + // Verify rows count only on partition opened from files. + // + // Online created partition may contain incomplete number of rows + // due to the race with raw rows flusher. + var m partitionMetrics + pt.UpdateMetrics(&m) + rowsCount := m.BigRowsCount + m.SmallRowsCount + if rowsCount != uint64(rowsCountExpected) { + return fmt.Errorf("unexpected rows count; got %d; want %d", rowsCount, rowsCountExpected) + } + } + + bs := []Block{} + var pts partitionSearch + pts.Init(pt, tsids, tr) + for pts.NextBlock() { + var b Block + b.CopyFrom(pts.Block) + bs = append(bs, b) + } + if err := pts.Error(); err != nil { + return fmt.Errorf("unexpected error: %s", err) + } + pts.MustClose() + rbs := newTestRawBlocks(bs, tr) + if err := testEqualRawBlocks(rbs, rbsExpected); err != nil { + return fmt.Errorf("unequal blocks: %s", err) + } + + if rowsCountExpected >= 0 { + var m partitionMetrics + pt.UpdateMetrics(&m) + rowsCount := m.BigRowsCount + m.SmallRowsCount + if rowsCount != uint64(rowsCountExpected) { + return fmt.Errorf("unexpected rows count after search; got %d; want %d", rowsCount, rowsCountExpected) + } + } + + // verify that empty tsids returns empty result + pts.Init(pt, []TSID{}, tr) + if pts.NextBlock() { + return fmt.Errorf("unexpected block got for an empty tsids list: %+v", pts.Block) + } + if err := pts.Error(); err != nil { + return fmt.Errorf("unexpected error on empty tsids list: %s", err) + } + pts.MustClose() + return nil +} + +func nilGetDeletedMetricIDs() map[uint64]struct{} { + return nil +} diff --git a/lib/storage/partition_test.go b/lib/storage/partition_test.go new file mode 100644 index 000000000..cf828967f --- /dev/null +++ b/lib/storage/partition_test.go @@ -0,0 +1,159 @@ +package storage + +import ( + "math/rand" + "reflect" + "testing" +) + +func TestPartitionMaxOutPartRows(t *testing.T) { + pt := &partition{ + bigPartsPath: ".", + } + n := pt.maxOutPartRows() + if n < 1e3 { + t.Fatalf("too small number of rows can be created in the current directory: %d", n) + } +} + +func TestAppendPartsToMerge(t *testing.T) { + testAppendPartsToMerge(t, 2, []int{}, nil) + testAppendPartsToMerge(t, 2, []int{123}, nil) + testAppendPartsToMerge(t, 2, []int{4, 2}, nil) + testAppendPartsToMerge(t, 2, []int{128, 64, 32, 16, 8, 4, 2, 1}, nil) + testAppendPartsToMerge(t, 4, []int{128, 64, 32, 10, 9, 7, 2, 1}, []int{2, 7, 9, 10}) + testAppendPartsToMerge(t, 2, []int{128, 64, 32, 16, 8, 4, 2, 2}, []int{2, 2}) + testAppendPartsToMerge(t, 4, []int{128, 64, 32, 16, 8, 4, 2, 2}, []int{2, 2, 4, 8}) + testAppendPartsToMerge(t, 2, []int{1, 1}, []int{1, 1}) + testAppendPartsToMerge(t, 2, []int{2, 2, 2}, []int{2, 2}) + testAppendPartsToMerge(t, 2, []int{4, 2, 4}, []int{4, 4}) + testAppendPartsToMerge(t, 2, []int{1, 3, 7, 2}, nil) + testAppendPartsToMerge(t, 3, []int{1, 3, 7, 2}, []int{1, 2, 3}) + testAppendPartsToMerge(t, 4, []int{1, 3, 7, 2}, []int{1, 2, 3}) + testAppendPartsToMerge(t, 3, []int{11, 1, 10, 100, 10}, []int{10, 10, 11}) +} + +func TestAppendPartsToMergeManyParts(t *testing.T) { + // Verify that big number of parts are merged into minimal number of parts + // using minimum merges. + var a []int + maxOutPartRows := uint64(0) + for i := 0; i < 1024; i++ { + n := int(rand.NormFloat64() * 1e9) + if n < 0 { + n = -n + } + n++ + maxOutPartRows += uint64(n) + a = append(a, n) + } + pws := newTestPartWrappersForRowsCount(a) + + iterationsCount := 0 + rowsMerged := uint64(0) + for { + pms := appendPartsToMerge(nil, pws, defaultPartsToMerge, maxOutPartRows) + if len(pms) == 0 { + break + } + m := make(map[*partWrapper]bool) + for _, pw := range pms { + m[pw] = true + } + var pwsNew []*partWrapper + rowsCount := uint64(0) + for _, pw := range pws { + if m[pw] { + rowsCount += pw.p.ph.RowsCount + } else { + pwsNew = append(pwsNew, pw) + } + } + pw := &partWrapper{ + p: &part{ + ph: partHeader{ + RowsCount: rowsCount, + }, + }, + } + rowsMerged += rowsCount + pwsNew = append(pwsNew, pw) + pws = pwsNew + iterationsCount++ + } + rowsCount := newTestRowsCountFromPartWrappers(pws) + rowsTotal := uint64(0) + for _, rc := range rowsCount { + rowsTotal += uint64(rc) + } + overhead := float64(rowsMerged) / float64(rowsTotal) + if overhead > 2.96 { + t.Fatalf("too big overhead; rowsCount=%d, iterationsCount=%d, rowsTotal=%d, rowsMerged=%d, overhead=%f", + rowsCount, iterationsCount, rowsTotal, rowsMerged, overhead) + } + if len(rowsCount) > 40 { + t.Fatalf("too many rowsCount %d; rowsCount=%d, iterationsCount=%d, rowsTotal=%d, rowsMerged=%d, overhead=%f", + len(rowsCount), rowsCount, iterationsCount, rowsTotal, rowsMerged, overhead) + } +} + +func testAppendPartsToMerge(t *testing.T, maxPartsToMerge int, initialRowsCount, expectedRowsCount []int) { + t.Helper() + + pws := newTestPartWrappersForRowsCount(initialRowsCount) + + // Verify appending to nil. + pms := appendPartsToMerge(nil, pws, maxPartsToMerge, 1e9) + rowsCount := newTestRowsCountFromPartWrappers(pms) + if !reflect.DeepEqual(rowsCount, expectedRowsCount) { + t.Fatalf("unexpected rowsCount for maxPartsToMerge=%d, initialRowsCount=%d; got\n%d; want\n%d", + maxPartsToMerge, initialRowsCount, rowsCount, expectedRowsCount) + } + + // Verify appending to prefix + prefix := []*partWrapper{ + &partWrapper{ + p: &part{ + ph: partHeader{ + RowsCount: 1234, + }, + }, + }, + &partWrapper{}, + &partWrapper{}, + } + pms = appendPartsToMerge(prefix, pws, maxPartsToMerge, 1e9) + if !reflect.DeepEqual(pms[:len(prefix)], prefix) { + t.Fatalf("unexpected prefix for maxPartsToMerge=%d, initialRowsCount=%d; got\n%+v; want\n%+v", + maxPartsToMerge, initialRowsCount, pms[:len(prefix)], prefix) + } + + rowsCount = newTestRowsCountFromPartWrappers(pms[len(prefix):]) + if !reflect.DeepEqual(rowsCount, expectedRowsCount) { + t.Fatalf("unexpected prefixed rowsCount for maxPartsToMerge=%d, initialRowsCount=%d; got\n%d; want\n%d", + maxPartsToMerge, initialRowsCount, rowsCount, expectedRowsCount) + } +} + +func newTestRowsCountFromPartWrappers(pws []*partWrapper) []int { + var rowsCount []int + for _, pw := range pws { + rowsCount = append(rowsCount, int(pw.p.ph.RowsCount)) + } + return rowsCount +} + +func newTestPartWrappersForRowsCount(rowsCount []int) []*partWrapper { + var pws []*partWrapper + for _, rc := range rowsCount { + pw := &partWrapper{ + p: &part{ + ph: partHeader{ + RowsCount: uint64(rc), + }, + }, + } + pws = append(pws, pw) + } + return pws +} diff --git a/lib/storage/raw_block.go b/lib/storage/raw_block.go new file mode 100644 index 000000000..b8409f26d --- /dev/null +++ b/lib/storage/raw_block.go @@ -0,0 +1,23 @@ +package storage + +// rawBlock represents a raw block of a single time-series rows. +type rawBlock struct { + TSID TSID + + Timestamps []int64 + Values []float64 +} + +// Reset resets rb. +func (rb *rawBlock) Reset() { + rb.TSID = TSID{} + rb.Timestamps = rb.Timestamps[:0] + rb.Values = rb.Values[:0] +} + +// CopyFrom copies src to rb. +func (rb *rawBlock) CopyFrom(src *rawBlock) { + rb.TSID = src.TSID + rb.Timestamps = append(rb.Timestamps[:0], src.Timestamps...) + rb.Values = append(rb.Values[:0], src.Values...) +} diff --git a/lib/storage/raw_row.go b/lib/storage/raw_row.go new file mode 100644 index 000000000..3d58c8e5e --- /dev/null +++ b/lib/storage/raw_row.go @@ -0,0 +1,160 @@ +package storage + +import ( + "sort" + "sync" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// rawRow reperesents raw timeseries row. +type rawRow struct { + // TSID is time series id. + TSID TSID + + // Timestamp is unix timestamp in milliseconds. + Timestamp int64 + + // Value is time series value for the given timestamp. + Value float64 + + // PrecisionBits is the number of the siginificant bits in the Value + // to store. Possible values are [1..64]. + // 1 means max. 50% error, 2 - 25%, 3 - 12.5%, 64 means no error, i.e. + // Value stored without information loss. + PrecisionBits uint8 +} + +type rawRowsMarshaler struct { + bsw blockStreamWriter + + auxTimestamps []int64 + auxValues []int64 + auxFloatValues []float64 +} + +func (rrm *rawRowsMarshaler) reset() { + rrm.bsw.reset() + + rrm.auxTimestamps = rrm.auxTimestamps[:0] + rrm.auxValues = rrm.auxValues[:0] + rrm.auxFloatValues = rrm.auxFloatValues[:0] +} + +// Use sort.Interface instead of sort.Slice in order to optimize rows swap. +type rawRowsSort []rawRow + +func (rrs *rawRowsSort) Len() int { return len(*rrs) } +func (rrs *rawRowsSort) Less(i, j int) bool { + x := *rrs + a := &x[i] + b := &x[j] + ta := &a.TSID + tb := &b.TSID + if ta.MetricID == tb.MetricID { + // Fast path - identical TSID values. + return a.Timestamp < b.Timestamp + } + + // Slow path - compare TSIDs. + // Manually inline TSID.Less here, since the compiler doesn't inline it yet :( + if ta.MetricGroupID < tb.MetricGroupID { + return true + } + if ta.MetricGroupID > tb.MetricGroupID { + return false + } + if ta.JobID < tb.JobID { + return true + } + if ta.JobID > tb.JobID { + return false + } + if ta.InstanceID < tb.InstanceID { + return true + } + if ta.InstanceID > tb.InstanceID { + return false + } + if ta.MetricID < tb.MetricID { + return true + } + if ta.MetricID > tb.MetricID { + return false + } + return false +} +func (rrs *rawRowsSort) Swap(i, j int) { + x := *rrs + x[i], x[j] = x[j], x[i] +} + +func (rrm *rawRowsMarshaler) marshalToInmemoryPart(mp *inmemoryPart, rows []rawRow) { + if len(rows) == 0 { + return + } + if uint64(len(rows)) >= 1<<32 { + logger.Panicf("BUG: rows count must be smaller than 2^32; got %d", len(rows)) + } + + rrm.bsw.InitFromInmemoryPart(mp) + + ph := &mp.ph + ph.Reset() + + // Sort rows by (TSID, Timestamp) if they aren't sorted yet. + rrs := rawRowsSort(rows) + if !sort.IsSorted(&rrs) { + sort.Sort(&rrs) + } + + // Group rows into blocks. + var scale int16 + var rowsMerged uint64 + r := &rows[0] + tsid := &r.TSID + precisionBits := r.PrecisionBits + tmpBlock := getBlock() + defer putBlock(tmpBlock) + for i := range rows { + r = &rows[i] + if r.TSID.MetricID == tsid.MetricID && len(rrm.auxTimestamps) < maxRowsPerBlock { + rrm.auxTimestamps = append(rrm.auxTimestamps, r.Timestamp) + rrm.auxFloatValues = append(rrm.auxFloatValues, r.Value) + continue + } + + rrm.auxValues, scale = decimal.AppendFloatToDecimal(rrm.auxValues[:0], rrm.auxFloatValues) + tmpBlock.Init(tsid, rrm.auxTimestamps, rrm.auxValues, scale, precisionBits) + rrm.bsw.WriteExternalBlock(tmpBlock, ph, &rowsMerged) + + tsid = &r.TSID + precisionBits = r.PrecisionBits + rrm.auxTimestamps = append(rrm.auxTimestamps[:0], r.Timestamp) + rrm.auxFloatValues = append(rrm.auxFloatValues[:0], r.Value) + } + + rrm.auxValues, scale = decimal.AppendFloatToDecimal(rrm.auxValues[:0], rrm.auxFloatValues) + tmpBlock.Init(tsid, rrm.auxTimestamps, rrm.auxValues, scale, precisionBits) + rrm.bsw.WriteExternalBlock(tmpBlock, ph, &rowsMerged) + if rowsMerged != uint64(len(rows)) { + logger.Panicf("BUG: unexpected rowsMerged; got %d; want %d", rowsMerged, len(rows)) + } + rrm.bsw.MustClose() +} + +func getRawRowsMarshaler() *rawRowsMarshaler { + v := rrmPool.Get() + if v == nil { + return &rawRowsMarshaler{} + } + return v.(*rawRowsMarshaler) +} + +func putRawRowsMarshaler(rrm *rawRowsMarshaler) { + rrm.reset() + rrmPool.Put(rrm) +} + +var rrmPool sync.Pool diff --git a/lib/storage/search.go b/lib/storage/search.go new file mode 100644 index 000000000..f460f6426 --- /dev/null +++ b/lib/storage/search.go @@ -0,0 +1,341 @@ +package storage + +import ( + "fmt" + "io" + "sync/atomic" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// MetricBlock is a time series block for a single metric. +type MetricBlock struct { + MetricName []byte + + Block *Block +} + +// Marshal marshals MetricBlock to dst +func (mb *MetricBlock) Marshal(dst []byte) []byte { + dst = encoding.MarshalBytes(dst, mb.MetricName) + return MarshalBlock(dst, mb.Block) +} + +// MarshalBlock marshals b to dst. +// +// b.MarshalData must be called on b before calling MarshalBlock. +func MarshalBlock(dst []byte, b *Block) []byte { + dst = b.bh.Marshal(dst) + dst = encoding.MarshalBytes(dst, b.timestampsData) + dst = encoding.MarshalBytes(dst, b.valuesData) + return dst +} + +// Unmarshal unmarshals MetricBlock from src +func (mb *MetricBlock) Unmarshal(src []byte) ([]byte, error) { + if mb.Block == nil { + logger.Panicf("BUG: MetricBlock.Block must be non-nil when calling Unmarshal!") + } else { + mb.Block.Reset() + } + tail, mn, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal MetricName: %s", err) + } + mb.MetricName = append(mb.MetricName[:0], mn...) + src = tail + + return UnmarshalBlock(mb.Block, src) +} + +// UnmarshalBlock unmarshal Block from src to dst. +// +// dst.UnmarshalData isn't called on the block. +func UnmarshalBlock(dst *Block, src []byte) ([]byte, error) { + tail, err := dst.bh.Unmarshal(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal blockHeader: %s", err) + } + src = tail + + tail, tds, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal timestampsData: %s", err) + } + dst.timestampsData = append(dst.timestampsData[:0], tds...) + src = tail + + tail, vd, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal valuesData: %s", err) + } + dst.valuesData = append(dst.valuesData[:0], vd...) + src = tail + + return src, nil +} + +// Search is a search for time series. +type Search struct { + // MetricBlock is updated with each Search.NextMetricBlock call. + MetricBlock MetricBlock + + storage *Storage + + ts tableSearch + + err error + + needClosing bool + + // MissingMetricNamesForMetricID is a counter of missing MetricID -> MetricName + // entries during the search. + // High rate may mean corrupted indexDB. + MissingMetricNamesForMetricID uint64 +} + +func (s *Search) reset() { + s.MetricBlock.MetricName = s.MetricBlock.MetricName[:0] + s.MetricBlock.Block = nil + + s.storage = nil + s.ts.reset() + s.err = nil + s.needClosing = false + s.MissingMetricNamesForMetricID = 0 +} + +// Init initializes s from the given storage, tfss and tr. +// +// MustClose must be called when the search is done. +func (s *Search) Init(storage *Storage, tfss []*TagFilters, tr TimeRange, maxMetrics int) { + if s.needClosing { + logger.Panicf("BUG: missing MustClose call before the next call to Init") + } + + s.reset() + s.needClosing = true + + tsids, err := storage.searchTSIDs(tfss, tr, maxMetrics) + + // It is ok to call Init on error from storage.searchTSIDs. + // Init must be called before returning because it will fail + // on Seach.MustClose otherwise. + s.ts.Init(storage.tb, tsids, tr) + + if err != nil { + s.err = err + return + } + + s.storage = storage +} + +// MustClose closes the Search. +func (s *Search) MustClose() { + if !s.needClosing { + logger.Panicf("BUG: missing Init call before MustClose") + } + s.ts.MustClose() + s.reset() +} + +// Error returns the last error from s. +func (s *Search) Error() error { + if s.err == io.EOF { + return nil + } + return s.err +} + +// NextMetricBlock proceeds to the next MetricBlock. +func (s *Search) NextMetricBlock() bool { + if s.err != nil { + return false + } + for s.ts.NextBlock() { + tsid := &s.ts.Block.bh.TSID + var err error + s.MetricBlock.MetricName, err = s.storage.searchMetricName(s.MetricBlock.MetricName[:0], tsid.MetricID) + if err != nil { + if err == io.EOF { + // Missing metricName for tsid.MetricID. Increment error counter and skip it. + atomic.AddUint64(&s.MissingMetricNamesForMetricID, 1) + continue + } + s.err = err + return false + } + s.MetricBlock.Block = s.ts.Block + return true + } + if err := s.ts.Error(); err != nil { + s.err = err + return false + } + + s.err = io.EOF + return false +} + +// SearchQuery is used for sending search queries from vmselect to vmstorage. +type SearchQuery struct { + MinTimestamp int64 + MaxTimestamp int64 + TagFilterss [][]TagFilter +} + +// TagFilter represents a single tag filter from SearchQuery. +type TagFilter struct { + Key []byte + Value []byte + IsNegative bool + IsRegexp bool +} + +// String returns string representation of tf. +func (tf *TagFilter) String() string { + var bb bytesutil.ByteBuffer + fmt.Fprintf(&bb, "{Key=%q, Value=%q, IsNegative: %v, IsRegexp: %v}", tf.Key, tf.Value, tf.IsNegative, tf.IsRegexp) + return string(bb.B) +} + +// Marshal appends marshaled tf to dst and returns the result. +func (tf *TagFilter) Marshal(dst []byte) []byte { + dst = encoding.MarshalBytes(dst, tf.Key) + dst = encoding.MarshalBytes(dst, tf.Value) + + x := 0 + if tf.IsNegative { + x = 2 + } + if tf.IsRegexp { + x |= 1 + } + dst = append(dst, byte(x)) + + return dst +} + +// Unmarshal unmarshals tf from src and returns the tail. +func (tf *TagFilter) Unmarshal(src []byte) ([]byte, error) { + tail, k, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal Key: %s", err) + } + tf.Key = append(tf.Key[:0], k...) + src = tail + + tail, v, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal Value: %s", err) + } + tf.Value = append(tf.Value[:0], v...) + src = tail + + if len(src) < 1 { + return src, fmt.Errorf("cannot unmarshal IsNegative+IsRegexp from empty src") + } + x := src[0] + switch x { + case 0: + tf.IsNegative = false + tf.IsRegexp = false + case 1: + tf.IsNegative = false + tf.IsRegexp = true + case 2: + tf.IsNegative = true + tf.IsRegexp = false + case 3: + tf.IsNegative = true + tf.IsRegexp = true + default: + return src, fmt.Errorf("unexpected value for IsNegative+IsRegexp: %d; must be in the range [0..3]", x) + } + src = src[1:] + + return src, nil +} + +// String returns string representation of the search query. +func (sq *SearchQuery) String() string { + var bb bytesutil.ByteBuffer + fmt.Fprintf(&bb, "MinTimestamp=%s, MaxTimestamp=%s, TagFilters=[\n", + timestampToTime(sq.MinTimestamp), timestampToTime(sq.MaxTimestamp)) + for _, tagFilters := range sq.TagFilterss { + for _, tf := range tagFilters { + fmt.Fprintf(&bb, "%s", tf.String()) + } + fmt.Fprintf(&bb, "\n") + } + fmt.Fprintf(&bb, "]") + return string(bb.B) +} + +// Marshal appends marshaled sq to dst and returns the result. +func (sq *SearchQuery) Marshal(dst []byte) []byte { + dst = encoding.MarshalVarInt64(dst, sq.MinTimestamp) + dst = encoding.MarshalVarInt64(dst, sq.MaxTimestamp) + dst = encoding.MarshalVarUint64(dst, uint64(len(sq.TagFilterss))) + for _, tagFilters := range sq.TagFilterss { + dst = encoding.MarshalVarUint64(dst, uint64(len(tagFilters))) + for i := range tagFilters { + dst = tagFilters[i].Marshal(dst) + } + } + return dst +} + +// Unmarshal unmarshals sq from src and returns the tail. +func (sq *SearchQuery) Unmarshal(src []byte) ([]byte, error) { + tail, minTs, err := encoding.UnmarshalVarInt64(src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal MinTimestamp: %s", err) + } + sq.MinTimestamp = minTs + src = tail + + tail, maxTs, err := encoding.UnmarshalVarInt64(src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal MaxTimestamp: %s", err) + } + sq.MaxTimestamp = maxTs + src = tail + + tail, tfssCount, err := encoding.UnmarshalVarUint64(src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal the count of TagFilterss: %s", err) + } + if n := int(tfssCount) - cap(sq.TagFilterss); n > 0 { + sq.TagFilterss = append(sq.TagFilterss[:cap(sq.TagFilterss)], make([][]TagFilter, n)...) + } + sq.TagFilterss = sq.TagFilterss[:tfssCount] + src = tail + + for i := 0; i < int(tfssCount); i++ { + tail, tfsCount, err := encoding.UnmarshalVarUint64(src) + if err != nil { + return src, fmt.Errorf("cannot unmarshal the count of TagFilters: %s", err) + } + src = tail + + tagFilters := sq.TagFilterss[i] + if n := int(tfsCount) - cap(tagFilters); n > 0 { + tagFilters = append(tagFilters[:cap(tagFilters)], make([]TagFilter, n)...) + } + tagFilters = tagFilters[:tfsCount] + for j := 0; j < int(tfsCount); j++ { + tail, err := tagFilters[j].Unmarshal(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal TagFilter #%d: %s", j, err) + } + src = tail + } + sq.TagFilterss[i] = tagFilters + } + + return src, nil +} diff --git a/lib/storage/search_test.go b/lib/storage/search_test.go new file mode 100644 index 000000000..f0bdfd4bd --- /dev/null +++ b/lib/storage/search_test.go @@ -0,0 +1,268 @@ +package storage + +import ( + "bytes" + "fmt" + "math/rand" + "os" + "reflect" + "regexp" + "sort" + "testing" + "testing/quick" + "time" +) + +func TestSearchQueryMarshalUnmarshal(t *testing.T) { + rnd := rand.New(rand.NewSource(0)) + typ := reflect.TypeOf(&SearchQuery{}) + var buf []byte + var sq2 SearchQuery + + for i := 0; i < 1000; i++ { + v, ok := quick.Value(typ, rnd) + if !ok { + t.Fatalf("cannot create random SearchQuery via testing/quick.Value") + } + sq1 := v.Interface().(*SearchQuery) + if sq1 == nil { + // Skip nil sq1. + continue + } + buf = sq1.Marshal(buf[:0]) + + tail, err := sq2.Unmarshal(buf) + if err != nil { + t.Fatalf("cannot unmarshal SearchQuery: %s", err) + } + if len(tail) > 0 { + t.Fatalf("unexpected tail left after SearchQuery unmarshaling; tail (len=%d): %q", len(tail), tail) + } + if sq1.MinTimestamp != sq2.MinTimestamp { + t.Fatalf("unexpected MinTimestamp; got %d; want %d", sq2.MinTimestamp, sq1.MinTimestamp) + } + if sq1.MaxTimestamp != sq2.MaxTimestamp { + t.Fatalf("unexpected MaxTimestamp; got %d; want %d", sq2.MaxTimestamp, sq1.MaxTimestamp) + } + if len(sq1.TagFilterss) != len(sq1.TagFilterss) { + t.Fatalf("unexpected TagFilterss len; got %d; want %d", len(sq2.TagFilterss), len(sq1.TagFilterss)) + } + for ii := range sq1.TagFilterss { + tagFilters1 := sq1.TagFilterss[ii] + tagFilters2 := sq2.TagFilterss[ii] + for j := range tagFilters1 { + tf1 := &tagFilters1[j] + tf2 := &tagFilters2[j] + if string(tf1.Key) != string(tf2.Key) { + t.Fatalf("unexpected Key on iteration %d,%d; got %X; want %X", i, j, tf2.Key, tf1.Key) + } + if string(tf1.Value) != string(tf2.Value) { + t.Fatalf("unexpected Value on iteration %d,%d; got %X; want %X", i, j, tf2.Value, tf1.Value) + } + if tf1.IsNegative != tf2.IsNegative { + t.Fatalf("unexpected IsNegative on iteration %d,%d; got %v; want %v", i, j, tf2.IsNegative, tf1.IsNegative) + } + if tf1.IsRegexp != tf2.IsRegexp { + t.Fatalf("unexpected IsRegexp on iteration %d,%d; got %v; want %v", i, j, tf2.IsRegexp, tf1.IsRegexp) + } + } + } + } +} + +func TestSearch(t *testing.T) { + path := "TestSearch" + st, err := OpenStorage(path, 0) + if err != nil { + t.Fatalf("cannot open storage %q: %s", path, err) + } + defer func() { + st.MustClose() + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove storage %q: %s", path, err) + } + }() + + // Add rows to storage. + const rowsCount = 2e4 + const rowsPerBlock = 1e3 + const metricGroupsCount = rowsCount / 5 + const accountsCount = 2 + + mrs := make([]MetricRow, rowsCount) + var mn MetricName + mn.Tags = []Tag{ + {[]byte("job"), []byte("super-service")}, + {[]byte("instance"), []byte("8.8.8.8:1234")}, + } + startTimestamp := timestampFromTime(time.Now()) + startTimestamp -= startTimestamp % (1e3 * 3600 * 24) + blockRowsCount := 0 + for i := 0; i < rowsCount; i++ { + mn.MetricGroup = []byte(fmt.Sprintf("metric_%d", i%metricGroupsCount)) + + mr := &mrs[i] + mr.MetricNameRaw = mn.marshalRaw(nil) + mr.Timestamp = startTimestamp + int64(i) + mr.Value = float64(i) + + blockRowsCount++ + if blockRowsCount == rowsPerBlock { + if err := st.AddRows(mrs[i-blockRowsCount+1:i+1], defaultPrecisionBits); err != nil { + t.Fatalf("cannot add rows %d-%d: %s", i-blockRowsCount+1, i+1, err) + } + blockRowsCount = 0 + } + } + if err := st.AddRows(mrs[rowsCount-blockRowsCount:], defaultPrecisionBits); err != nil { + t.Fatalf("cannot add rows %v-%v: %s", rowsCount-blockRowsCount, rowsCount, err) + } + endTimestamp := mrs[len(mrs)-1].Timestamp + + // Re-open the storage in order to flush all the pending cached data. + st.MustClose() + st, err = OpenStorage(path, 0) + if err != nil { + t.Fatalf("cannot re-open storage %q: %s", path, err) + } + + // Run search. + tr := TimeRange{ + MinTimestamp: startTimestamp + int64(rowsCount)/3, + MaxTimestamp: endTimestamp - int64(rowsCount)/3, + } + + t.Run("serial", func(t *testing.T) { + if err := testSearch(st, tr, mrs, accountsCount); err != nil { + t.Fatalf("unexpected error: %s", err) + } + }) + + t.Run("concurrent", func(t *testing.T) { + ch := make(chan error, 3) + for i := 0; i < cap(ch); i++ { + go func() { + ch <- testSearch(st, tr, mrs, accountsCount) + }() + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(10 * time.Second): + t.Fatalf("timeout") + } + } + }) +} + +func testSearch(st *Storage, tr TimeRange, mrs []MetricRow, accountsCount int) error { + var s Search + for i := 0; i < 10; i++ { + // Prepare TagFilters for search. + tfs := NewTagFilters() + metricGroupRe := fmt.Sprintf(`metric_\d*%d%d`, i, i) + if err := tfs.Add(nil, []byte(metricGroupRe), false, true); err != nil { + return fmt.Errorf("cannot add metricGroupRe=%q: %s", metricGroupRe, err) + } + if err := tfs.Add([]byte("job"), []byte("nonexisting-service"), true, false); err != nil { + return fmt.Errorf("cannot add tag filter %q=%q: %s", "job", "nonexsitsing-service", err) + } + if err := tfs.Add([]byte("instance"), []byte(".*"), false, true); err != nil { + return fmt.Errorf("cannot add tag filter %q=%q: %s", "instance", ".*", err) + } + + // Build extectedMrs. + var expectedMrs []MetricRow + metricGroupRegexp := regexp.MustCompile(fmt.Sprintf("^%s$", metricGroupRe)) + var mn MetricName + for j := range mrs { + mr := &mrs[j] + if mr.Timestamp < tr.MinTimestamp || mr.Timestamp > tr.MaxTimestamp { + continue + } + if err := mn.unmarshalRaw(mr.MetricNameRaw); err != nil { + return fmt.Errorf("cannot unmarshal MetricName: %s", err) + } + if !metricGroupRegexp.Match(mn.MetricGroup) { + continue + } + expectedMrs = append(expectedMrs, *mr) + } + + // Search + s.Init(st, []*TagFilters{tfs}, tr, 1e5) + var mbs []MetricBlock + for s.NextMetricBlock() { + var b Block + b.CopyFrom(s.MetricBlock.Block) + + var mb MetricBlock + mb.MetricName = append(mb.MetricName, s.MetricBlock.MetricName...) + mb.Block = &b + mbs = append(mbs, mb) + } + if err := s.Error(); err != nil { + return fmt.Errorf("search error: %s", err) + } + s.MustClose() + + // Build foundMrs. + var foundMrs []MetricRow + for _, mb := range mbs { + rb := newTestRawBlock(mb.Block, tr) + if err := mn.Unmarshal(mb.MetricName); err != nil { + return fmt.Errorf("cannot unmarshal MetricName: %s", err) + } + metricNameRaw := mn.marshalRaw(nil) + for i, timestamp := range rb.Timestamps { + mr := MetricRow{ + MetricNameRaw: metricNameRaw, + Timestamp: timestamp, + Value: rb.Values[i], + } + foundMrs = append(foundMrs, mr) + } + } + + // Compare expectedMrs to foundMrs. + sort.Slice(expectedMrs, func(i, j int) bool { + a, b := &expectedMrs[i], &expectedMrs[j] + cmp := bytes.Compare(a.MetricNameRaw, b.MetricNameRaw) + if cmp < 0 { + return true + } + if cmp > 0 { + return false + } + return a.Timestamp < b.Timestamp + }) + sort.Slice(foundMrs, func(i, j int) bool { + a, b := &foundMrs[i], &foundMrs[j] + cmp := bytes.Compare(a.MetricNameRaw, b.MetricNameRaw) + if cmp < 0 { + return true + } + if cmp > 0 { + return false + } + return a.Timestamp < b.Timestamp + }) + if !reflect.DeepEqual(expectedMrs, foundMrs) { + return fmt.Errorf("unexpected rows found;\ngot\n%s\nwant\n%s", mrsToString(foundMrs), mrsToString(expectedMrs)) + } + } + return nil +} + +func mrsToString(mrs []MetricRow) string { + var bb bytes.Buffer + fmt.Fprintf(&bb, "len=%d\n", len(mrs)) + for i := range mrs { + mr := &mrs[i] + fmt.Fprintf(&bb, "[%q, Timestamp=%d, Value=%f]\n", mr.MetricNameRaw, mr.Timestamp, mr.Value) + } + return bb.String() +} diff --git a/lib/storage/storage.go b/lib/storage/storage.go new file mode 100644 index 000000000..b68d5db56 --- /dev/null +++ b/lib/storage/storage.go @@ -0,0 +1,792 @@ +package storage + +import ( + "fmt" + "math" + "os" + "path/filepath" + "regexp" + "runtime" + "sort" + "sync" + "sync/atomic" + "time" + "unsafe" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" + "github.com/VictoriaMetrics/fastcache" + "golang.org/x/sys/unix" +) + +const maxRetentionMonths = 12 * 100 + +// Storage represents TSDB storage. +type Storage struct { + path string + cachePath string + retentionMonths int + + // lock file for excluse access to the storage on the given path. + flockF *os.File + + idbCurr atomic.Value + + tb *table + + // tsidCache is MetricName -> TSID cache. + tsidCache *fastcache.Cache + + // metricIDCache is MetricID -> TSID cache. + metricIDCache *fastcache.Cache + + // metricNameCache is MetricID -> MetricName cache. + metricNameCache *fastcache.Cache + + // dateMetricIDCache is (Date, MetricID) cache. + dateMetricIDCache *fastcache.Cache + + stop chan struct{} + retentionWatcherWG sync.WaitGroup +} + +// OpenStorage opens storage on the given path with the given number of retention months. +func OpenStorage(path string, retentionMonths int) (*Storage, error) { + if retentionMonths > maxRetentionMonths { + return nil, fmt.Errorf("too big retentionMonths=%d; cannot exceed %d", retentionMonths, maxRetentionMonths) + } + if retentionMonths <= 0 { + retentionMonths = maxRetentionMonths + } + path, err := filepath.Abs(path) + if err != nil { + return nil, fmt.Errorf("cannot determine absolute path for %q: %s", path, err) + } + + s := &Storage{ + path: path, + cachePath: path + "/cache", + retentionMonths: retentionMonths, + + stop: make(chan struct{}), + } + + if err := fs.MkdirAllIfNotExist(path); err != nil { + return nil, fmt.Errorf("cannot create a directory for the storage at %q: %s", path, err) + } + snapshotsPath := path + "/snapshots" + if err := fs.MkdirAllIfNotExist(snapshotsPath); err != nil { + return nil, fmt.Errorf("cannot create %q: %s", snapshotsPath, err) + } + + flockFile := path + "/flock.lock" + flockF, err := os.Create(flockFile) + if err != nil { + return nil, fmt.Errorf("cannot create lock file %q: %s", flockFile, err) + } + if err := unix.Flock(int(flockF.Fd()), unix.LOCK_EX|unix.LOCK_NB); err != nil { + return nil, fmt.Errorf("cannot acquire lock on file %q: %s", flockFile, err) + } + s.flockF = flockF + + // Load caches. + mem := memory.Allowed() + s.tsidCache = s.mustLoadCache("MetricName->TSID", "metricName_tsid", mem/3) + s.metricIDCache = s.mustLoadCache("MetricID->TSID", "metricID_tsid", mem/16) + s.metricNameCache = s.mustLoadCache("MetricID->MetricName", "metricID_metricName", mem/8) + s.dateMetricIDCache = s.mustLoadCache("Date->MetricID", "date_metricID", mem/32) + + // Load indexdb + idbPath := path + "/indexdb" + idbSnapshotsPath := idbPath + "/snapshots" + if err := fs.MkdirAllIfNotExist(idbSnapshotsPath); err != nil { + return nil, fmt.Errorf("cannot create %q: %s", idbSnapshotsPath, err) + } + idbCurr, idbPrev, err := openIndexDBTables(idbPath, s.metricIDCache, s.metricNameCache) + if err != nil { + return nil, fmt.Errorf("cannot open indexdb tables at %q: %s", idbPath, err) + } + idbCurr.SetExtDB(idbPrev) + s.idbCurr.Store(idbCurr) + + // Load data + tablePath := path + "/data" + tb, err := openTable(tablePath, retentionMonths, s.getDeletedMetricIDs) + if err != nil { + s.idb().MustClose() + return nil, fmt.Errorf("cannot open table at %q: %s", tablePath, err) + } + s.tb = tb + + s.startRetentionWatcher() + + return s, nil +} + +// debugFlush flushes recently added storage data, so it becomes visible to search. +func (s *Storage) debugFlush() { + s.tb.flushRawRows() + s.idb().tb.DebugFlush() +} + +func (s *Storage) getDeletedMetricIDs() map[uint64]struct{} { + return s.idb().getDeletedMetricIDs() +} + +// CreateSnapshot creates snapshot for s and returns the snapshot name. +func (s *Storage) CreateSnapshot() (string, error) { + logger.Infof("creating Storage snapshot for %q...", s.path) + startTime := time.Now() + + snapshotName := fmt.Sprintf("%s-%08X", time.Now().UTC().Format("20060102150405"), nextSnapshotIdx()) + srcDir := s.path + dstDir := fmt.Sprintf("%s/snapshots/%s", srcDir, snapshotName) + if err := fs.MkdirAllFailIfExist(dstDir); err != nil { + return "", fmt.Errorf("cannot create dir %q: %s", dstDir, err) + } + dstDataDir := dstDir + "/data" + if err := fs.MkdirAllFailIfExist(dstDataDir); err != nil { + return "", fmt.Errorf("cannot create dir %q: %s", dstDataDir, err) + } + + smallDir, bigDir, err := s.tb.CreateSnapshot(snapshotName) + if err != nil { + return "", fmt.Errorf("cannot create table snapshot: %s", err) + } + dstSmallDir := dstDataDir + "/small" + if err := fs.SymlinkRelative(smallDir, dstSmallDir); err != nil { + return "", fmt.Errorf("cannot create symlink from %q to %q: %s", smallDir, dstSmallDir, err) + } + dstBigDir := dstDataDir + "/big" + if err := fs.SymlinkRelative(bigDir, dstBigDir); err != nil { + return "", fmt.Errorf("cannot create symlink from %q to %q: %s", bigDir, dstBigDir, err) + } + fs.SyncPath(dstDataDir) + + idbSnapshot := fmt.Sprintf("%s/indexdb/snapshots/%s", s.path, snapshotName) + idb := s.idb() + currSnapshot := idbSnapshot + "/" + idb.name + if err := idb.tb.CreateSnapshotAt(currSnapshot); err != nil { + return "", fmt.Errorf("cannot create curr indexDB snapshot: %s", err) + } + ok := idb.doExtDB(func(extDB *indexDB) { + prevSnapshot := idbSnapshot + "/" + extDB.name + err = extDB.tb.CreateSnapshotAt(prevSnapshot) + }) + if ok && err != nil { + return "", fmt.Errorf("cannot create prev indexDB snapshot: %s", err) + } + dstIdbDir := dstDir + "/indexdb" + if err := fs.SymlinkRelative(idbSnapshot, dstIdbDir); err != nil { + return "", fmt.Errorf("cannot create symlink from %q to %q: %s", idbSnapshot, dstIdbDir, err) + } + + fs.SyncPath(dstDir) + fs.SyncPath(srcDir + "/snapshots") + + logger.Infof("created Storage snapshot for %q at %q in %s", srcDir, dstDir, time.Since(startTime)) + return snapshotName, nil +} + +var snapshotNameRegexp = regexp.MustCompile("^[0-9]{14}-[0-9A-Fa-f]+$") + +// ListSnapshots returns sorted list of existing snapshots for s. +func (s *Storage) ListSnapshots() ([]string, error) { + snapshotsPath := s.path + "/snapshots" + d, err := os.Open(snapshotsPath) + if err != nil { + return nil, fmt.Errorf("cannot open %q: %s", snapshotsPath, err) + } + defer fs.MustClose(d) + + fnames, err := d.Readdirnames(-1) + if err != nil { + return nil, fmt.Errorf("cannot read contents of %q: %s", snapshotsPath, err) + } + snapshotNames := make([]string, 0, len(fnames)) + for _, fname := range fnames { + if !snapshotNameRegexp.MatchString(fname) { + continue + } + snapshotNames = append(snapshotNames, fname) + } + sort.Strings(snapshotNames) + return snapshotNames, nil +} + +// DeleteSnapshot deletes the given snapshot. +func (s *Storage) DeleteSnapshot(snapshotName string) error { + if !snapshotNameRegexp.MatchString(snapshotName) { + return fmt.Errorf("invalid snapshotName %q", snapshotName) + } + snapshotPath := s.path + "/snapshots/" + snapshotName + + logger.Infof("deleting snapshot %q...", snapshotPath) + startTime := time.Now() + + s.tb.MustDeleteSnapshot(snapshotName) + idbPath := fmt.Sprintf("%s/indexdb/snapshots/%s", s.path, snapshotName) + fs.MustRemoveAllSynced(idbPath) + fs.MustRemoveAllSynced(snapshotPath) + + logger.Infof("deleted snapshot %q in %s", snapshotPath, time.Since(startTime)) + + return nil +} + +var snapshotIdx = uint64(time.Now().UnixNano()) + +func nextSnapshotIdx() uint64 { + return atomic.AddUint64(&snapshotIdx, 1) +} + +func (s *Storage) idb() *indexDB { + return s.idbCurr.Load().(*indexDB) +} + +// Metrics contains essential metrics for the Storage. +type Metrics struct { + TSIDCacheSize uint64 + TSIDCacheBytesSize uint64 + TSIDCacheRequests uint64 + TSIDCacheMisses uint64 + TSIDCacheCollisions uint64 + + MetricIDCacheSize uint64 + MetricIDCacheBytesSize uint64 + MetricIDCacheRequests uint64 + MetricIDCacheMisses uint64 + MetricIDCacheCollisions uint64 + + MetricNameCacheSize uint64 + MetricNameCacheBytesSize uint64 + MetricNameCacheRequests uint64 + MetricNameCacheMisses uint64 + MetricNameCacheCollisions uint64 + + DateMetricIDCacheSize uint64 + DateMetricIDCacheBytesSize uint64 + DateMetricIDCacheRequests uint64 + DateMetricIDCacheMisses uint64 + DateMetricIDCacheCollisions uint64 + + IndexDBMetrics IndexDBMetrics + TableMetrics TableMetrics +} + +// Reset resets m. +func (m *Metrics) Reset() { + *m = Metrics{} +} + +// UpdateMetrics updates m with metrics from s. +func (s *Storage) UpdateMetrics(m *Metrics) { + var cs fastcache.Stats + s.tsidCache.UpdateStats(&cs) + m.TSIDCacheSize += cs.EntriesCount + m.TSIDCacheBytesSize += cs.BytesSize + m.TSIDCacheRequests += cs.GetCalls + m.TSIDCacheMisses += cs.Misses + m.TSIDCacheCollisions += cs.Collisions + + cs.Reset() + s.metricIDCache.UpdateStats(&cs) + m.MetricIDCacheSize += cs.EntriesCount + m.MetricIDCacheBytesSize += cs.BytesSize + m.MetricIDCacheRequests += cs.GetCalls + m.MetricIDCacheMisses += cs.Misses + m.MetricIDCacheCollisions += cs.Collisions + + cs.Reset() + s.metricNameCache.UpdateStats(&cs) + m.MetricNameCacheSize += cs.EntriesCount + m.MetricNameCacheBytesSize += cs.BytesSize + m.MetricNameCacheRequests += cs.GetCalls + m.MetricNameCacheMisses += cs.Misses + m.MetricNameCacheCollisions += cs.Collisions + + cs.Reset() + s.dateMetricIDCache.UpdateStats(&cs) + m.DateMetricIDCacheSize += cs.EntriesCount + m.DateMetricIDCacheBytesSize += cs.BytesSize + m.DateMetricIDCacheRequests += cs.GetCalls + m.DateMetricIDCacheMisses += cs.Misses + m.DateMetricIDCacheCollisions += cs.Collisions + + s.idb().UpdateMetrics(&m.IndexDBMetrics) + s.tb.UpdateMetrics(&m.TableMetrics) +} + +func (s *Storage) startRetentionWatcher() { + s.retentionWatcherWG.Add(1) + go func() { + s.retentionWatcher() + s.retentionWatcherWG.Done() + }() +} + +func (s *Storage) retentionWatcher() { + for { + d := nextRetentionDuration(s.retentionMonths) + select { + case <-s.stop: + return + case <-time.After(d): + s.mustRotateIndexDB() + } + } +} + +func (s *Storage) mustRotateIndexDB() { + // Create new indexdb table. + newTableName := nextIndexDBTableName() + idbNewPath := s.path + "/indexdb/" + newTableName + idbNew, err := openIndexDB(idbNewPath, s.metricIDCache, s.metricNameCache) + if err != nil { + logger.Panicf("FATAL: cannot create new indexDB at %q: %s", idbNewPath, err) + } + + // Drop extDB + idbCurr := s.idb() + idbCurr.doExtDB(func(extDB *indexDB) { + extDB.scheduleToDrop() + }) + idbCurr.SetExtDB(nil) + + // Start using idbNew + idbNew.SetExtDB(idbCurr) + s.idbCurr.Store(idbNew) + + // Persist changes on the file system. + fs.SyncPath(s.path) + + // Flush tsidCache, so idbNew can be populated with fresh data. + s.tsidCache.Reset() + + // Flush dateMetricIDCache, so idbNew can be populated with fresh data. + s.dateMetricIDCache.Reset() + + // Do not flush metricIDCache and metricNameCache, since all the metricIDs + // from prev idb remain valid after the rotation. +} + +// MustClose closes the storage. +func (s *Storage) MustClose() { + close(s.stop) + + s.retentionWatcherWG.Wait() + + s.tb.MustClose() + s.idb().MustClose() + + // Save caches. + s.mustSaveCache(s.tsidCache, "MetricName->TSID", "metricName_tsid") + s.mustSaveCache(s.metricIDCache, "MetricID->TSID", "metricID_tsid") + s.mustSaveCache(s.metricNameCache, "MetricID->MetricName", "metricID_metricName") + s.mustSaveCache(s.dateMetricIDCache, "Date->MetricID", "date_metricID") + + // Release lock file. + if err := s.flockF.Close(); err != nil { + logger.Panicf("FATAL: cannot close lock file %q: %s", s.flockF.Name(), err) + } +} + +func (s *Storage) mustLoadCache(info, name string, bytesSize int) *fastcache.Cache { + path := s.cachePath + "/" + name + logger.Infof("loading %s cache from %q...", info, path) + startTime := time.Now() + c := fastcache.LoadFromFileOrNew(path, bytesSize) + var cs fastcache.Stats + c.UpdateStats(&cs) + logger.Infof("loaded %s cache from %q in %s; entriesCount: %d; bytesSize: %d", + info, path, time.Since(startTime), cs.EntriesCount, cs.BytesSize) + return c +} + +func (s *Storage) mustSaveCache(c *fastcache.Cache, info, name string) { + gomaxprocs := runtime.GOMAXPROCS(-1) + path := s.cachePath + "/" + name + logger.Infof("saving %s cache to %q...", info, path) + startTime := time.Now() + if err := c.SaveToFileConcurrent(path, gomaxprocs); err != nil { + logger.Panicf("FATAL: cannot save %s cache to %q: %s", info, path, err) + } + var cs fastcache.Stats + c.UpdateStats(&cs) + c.Reset() + logger.Infof("saved %s cache to %q in %s; entriesCount: %d; bytesSize: %d", + info, path, time.Since(startTime), cs.EntriesCount, cs.BytesSize) +} + +func nextRetentionDuration(retentionMonths int) time.Duration { + t := time.Now().UTC() + n := t.Year()*12 + int(t.Month()) - 1 + retentionMonths + n -= n % retentionMonths + y := n / 12 + m := time.Month((n % 12) + 1) + deadline := time.Date(y, m, 1, 0, 0, 0, 0, time.UTC) + return deadline.Sub(t) +} + +// searchTSIDs returns TSIDs for the given tfss and the given tr. +func (s *Storage) searchTSIDs(tfss []*TagFilters, tr TimeRange, maxMetrics int) ([]TSID, error) { + // Do not cache tfss -> tsids here, since the caching is performed + // on idb level. + tsids, err := s.idb().searchTSIDs(tfss, tr, maxMetrics) + if err != nil { + return nil, fmt.Errorf("error when searching tsids for tfss %q: %s", tfss, err) + } + return tsids, nil +} + +// DeleteMetrics deletes all the metrics matching the given tfss. +// +// Returns the number of metrics deleted. +func (s *Storage) DeleteMetrics(tfss []*TagFilters) (int, error) { + deletedCount, err := s.idb().DeleteTSIDs(tfss) + if err != nil { + return deletedCount, fmt.Errorf("cannot delete tsids: %s", err) + } + // Do not reset MetricName -> TSID cache (tsidCache), since the obtained + // entries must be checked against deleted metricIDs. + // See Storage.add for details. + // + // Do not reset MetricID -> MetricName cache, since it must be used only + // after filtering out deleted metricIDs. + return deletedCount, nil +} + +// searchMetricName appends metric name for the given metricID to dst +// and returns the result. +func (s *Storage) searchMetricName(dst []byte, metricID uint64) ([]byte, error) { + return s.idb().searchMetricName(dst, metricID) +} + +// SearchTagKeys searches for tag keys +func (s *Storage) SearchTagKeys(maxTagKeys int) ([]string, error) { + return s.idb().SearchTagKeys(maxTagKeys) +} + +// SearchTagValues searches for tag values for the given tagKey +func (s *Storage) SearchTagValues(tagKey []byte, maxTagValues int) ([]string, error) { + return s.idb().SearchTagValues(tagKey, maxTagValues) +} + +// GetSeriesCount returns the approximate number of unique time series. +// +// It includes the deleted series too and may count the same series +// up to two times - in db and extDB. +func (s *Storage) GetSeriesCount() (uint64, error) { + return s.idb().GetSeriesCount() +} + +// MetricRow is a metric to insert into storage. +type MetricRow struct { + // MetricNameRaw contains raw metric name, which must be decoded + // with MetricName.unmarshalRaw. + MetricNameRaw []byte + + Timestamp int64 + Value float64 +} + +// CopyFrom copies src to mr. +func (mr *MetricRow) CopyFrom(src *MetricRow) { + mr.MetricNameRaw = append(mr.MetricNameRaw[:0], src.MetricNameRaw...) + mr.Timestamp = src.Timestamp + mr.Value = src.Value +} + +// String returns string representation of the mr. +func (mr *MetricRow) String() string { + metricName := string(mr.MetricNameRaw) + var mn MetricName + if err := mn.unmarshalRaw(mr.MetricNameRaw); err == nil { + metricName = mn.String() + } + return fmt.Sprintf("MetricName=%s, Timestamp=%d, Value=%f\n", + metricName, mr.Timestamp, mr.Value) +} + +// Marshal appends marshaled mr to dst and returns the result. +func (mr *MetricRow) Marshal(dst []byte) []byte { + dst = encoding.MarshalBytes(dst, mr.MetricNameRaw) + dst = encoding.MarshalUint64(dst, uint64(mr.Timestamp)) + dst = encoding.MarshalUint64(dst, math.Float64bits(mr.Value)) + return dst +} + +// Unmarshal unmarshals mr from src and returns the remaining tail from src. +func (mr *MetricRow) Unmarshal(src []byte) ([]byte, error) { + tail, metricNameRaw, err := encoding.UnmarshalBytes(src) + if err != nil { + return tail, fmt.Errorf("cannot unmarshal MetricName: %s", err) + } + mr.MetricNameRaw = append(mr.MetricNameRaw[:0], metricNameRaw...) + + if len(tail) < 8 { + return tail, fmt.Errorf("cannot unmarshal Timestamp: want %d bytes; have %d bytes", 8, len(tail)) + } + timestamp := encoding.UnmarshalUint64(tail) + mr.Timestamp = int64(timestamp) + tail = tail[8:] + + if len(tail) < 8 { + return tail, fmt.Errorf("cannot unmarshal Value: want %d bytes; have %d bytes", 8, len(tail)) + } + value := encoding.UnmarshalUint64(tail) + mr.Value = math.Float64frombits(value) + tail = tail[8:] + + return tail, nil +} + +// AddRows adds the given mrs to s. +func (s *Storage) AddRows(mrs []MetricRow, precisionBits uint8) error { + if len(mrs) == 0 { + return nil + } + + // Limit the number of concurrent goroutines that may add rows to the storage. + // This should prevent from out of memory errors and CPU trashing when too many + // goroutines call AddRows. + t := time.NewTimer(addRowsTimeout) + select { + case addRowsConcurrencyCh <- struct{}{}: + t.Stop() + defer func() { <-addRowsConcurrencyCh }() + case <-t.C: + return fmt.Errorf("Cannot add %d rows to storage in %s, since it is overloaded with %d concurrent writers. Add more CPUs or reduce load", + len(mrs), addRowsTimeout, cap(addRowsConcurrencyCh)) + } + + // Add rows to the storage. + var err error + rr := getRawRowsWithSize(len(mrs)) + rr.rows, err = s.add(rr.rows, mrs, precisionBits) + putRawRows(rr) + + return err +} + +var ( + addRowsConcurrencyCh = make(chan struct{}, runtime.GOMAXPROCS(-1)*2) + addRowsTimeout = 30 * time.Second +) + +func (s *Storage) add(rows []rawRow, mrs []MetricRow, precisionBits uint8) ([]rawRow, error) { + var errors []error + var is *indexSearch + var mn *MetricName + var kb *bytesutil.ByteBuffer + + idb := s.idb() + dmis := idb.getDeletedMetricIDs() + rowsLen := len(rows) + if n := rowsLen + len(mrs) - cap(rows); n > 0 { + rows = append(rows[:cap(rows)], make([]rawRow, n)...) + } + rows = rows[:rowsLen+len(mrs)] + j := 0 + for i := range mrs { + mr := &mrs[i] + if math.IsNaN(mr.Value) { + // Just skip NaNs, since the underlying encoding + // doesn't know how to work with them. + continue + } + r := &rows[rowsLen+j] + j++ + r.Timestamp = mr.Timestamp + r.Value = mr.Value + r.PrecisionBits = precisionBits + if s.getTSIDFromCache(&r.TSID, mr.MetricNameRaw) { + if len(dmis) == 0 { + // Fast path - the TSID for the given MetricName has been found in cache and isn't deleted. + continue + } + if _, deleted := dmis[r.TSID.MetricID]; !deleted { + // Fast path - the TSID for the given MetricName has been found in cache and isn't deleted. + continue + } + } + + // Slow path - the TSID is missing in the cache. Search for it in the index. + if is == nil { + is = idb.getIndexSearch() + mn = GetMetricName() + kb = kbPool.Get() + } + if err := mn.unmarshalRaw(mr.MetricNameRaw); err != nil { + // Do not stop adding rows on error - just skip invalid row. + // This guarantees that invalid rows don't prevent + // from adding valid rows into the storage. + err = fmt.Errorf("cannot unmarshal MetricNameRaw %q: %s", mr.MetricNameRaw, err) + errors = append(errors, err) + j-- + continue + } + mn.sortTags() + kb.B = mn.Marshal(kb.B[:0]) + if err := is.GetOrCreateTSIDByName(&r.TSID, kb.B); err != nil { + // Do not stop adding rows on error - just skip invalid row. + // This guarantees that invalid rows don't prevent + // from adding valid rows into the storage. + err = fmt.Errorf("cannot obtain TSID for MetricName %q: %s", kb.B, err) + errors = append(errors, err) + j-- + continue + } + s.putTSIDToCache(&r.TSID, mr.MetricNameRaw) + } + if is != nil { + kbPool.Put(kb) + PutMetricName(mn) + idb.putIndexSearch(is) + } + rows = rows[:rowsLen+j] + + if err := s.tb.AddRows(rows); err != nil { + err = fmt.Errorf("cannot add rows to table: %s", err) + errors = append(errors, err) + } + errors = s.updateDateMetricIDCache(rows, errors) + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + return rows, fmt.Errorf("errors occured during rows addition: %s", errors[0]) + } + return rows, nil +} + +func (s *Storage) updateDateMetricIDCache(rows []rawRow, errors []error) []error { + var date uint64 + var prevTimestamp int64 + kb := kbPool.Get() + defer kbPool.Put(kb) + kb.B = bytesutil.Resize(kb.B, 16) + keyBuf := kb.B + a := (*[2]uint64)(unsafe.Pointer(&keyBuf[0])) + idb := s.idb() + for i := range rows { + r := &rows[i] + if r.Timestamp != prevTimestamp { + date = uint64(r.Timestamp) / msecPerDay + prevTimestamp = r.Timestamp + } + metricID := r.TSID.MetricID + a[0] = date + a[1] = metricID + if s.dateMetricIDCache.Has(keyBuf) { + // Fast path: the (date, metricID) entry is in the cache. + continue + } + + // Slow path: store the entry in the cache and in the indexDB. + // It is OK if the (date, metricID) entry is added multiple times to db + // by concurrent goroutines. + s.dateMetricIDCache.Set(keyBuf, nil) + if err := idb.storeDateMetricID(date, metricID); err != nil { + errors = append(errors, err) + continue + } + } + return errors +} + +func (s *Storage) getTSIDFromCache(dst *TSID, metricName []byte) bool { + buf := (*[unsafe.Sizeof(*dst)]byte)(unsafe.Pointer(dst))[:] + buf = s.tsidCache.Get(buf[:0], metricName) + return uintptr(len(buf)) == unsafe.Sizeof(*dst) +} + +func (s *Storage) putTSIDToCache(tsid *TSID, metricName []byte) { + buf := (*[unsafe.Sizeof(*tsid)]byte)(unsafe.Pointer(tsid))[:] + s.tsidCache.Set(metricName, buf) +} + +func openIndexDBTables(path string, metricIDCache, metricNameCache *fastcache.Cache) (curr, prev *indexDB, err error) { + if err := fs.MkdirAllIfNotExist(path); err != nil { + return nil, nil, fmt.Errorf("cannot create directory %q: %s", path, err) + } + + d, err := os.Open(path) + if err != nil { + return nil, nil, fmt.Errorf("cannot open directory: %s", err) + } + defer fs.MustClose(d) + + // Search for the two most recent tables - the last one is active, + // the previous one contains backup data. + fis, err := d.Readdir(-1) + if err != nil { + return nil, nil, fmt.Errorf("cannot read directory: %s", err) + } + var tableNames []string + for _, fi := range fis { + if !fs.IsDirOrSymlink(fi) { + // Skip non-directories. + continue + } + tableName := fi.Name() + if !indexDBTableNameRegexp.MatchString(tableName) { + // Skip invalid directories. + continue + } + tableNames = append(tableNames, tableName) + } + sort.Slice(tableNames, func(i, j int) bool { + return tableNames[i] < tableNames[j] + }) + if len(tableNames) < 2 { + // Create missing tables + if len(tableNames) == 0 { + prevName := nextIndexDBTableName() + tableNames = append(tableNames, prevName) + } + currName := nextIndexDBTableName() + tableNames = append(tableNames, currName) + } + + // Invariant: len(tableNames) >= 2 + + // Remove all the tables except two last tables. + for _, tn := range tableNames[:len(tableNames)-2] { + pathToRemove := path + "/" + tn + logger.Infof("removing obsolete indexdb dir %q...", pathToRemove) + if err := os.RemoveAll(pathToRemove); err != nil { + return nil, nil, fmt.Errorf("cannot remove obsolete indexdb dir %q: %s", pathToRemove, err) + } + logger.Infof("removed obsolete indexdb dir %q", pathToRemove) + } + + // Persist changes on the file system. + fs.SyncPath(path) + + // Open the last two tables. + currPath := path + "/" + tableNames[len(tableNames)-1] + + curr, err = openIndexDB(currPath, metricIDCache, metricNameCache) + if err != nil { + return nil, nil, fmt.Errorf("cannot open curr indexdb table at %q: %s", currPath, err) + } + prevPath := path + "/" + tableNames[len(tableNames)-2] + prev, err = openIndexDB(prevPath, metricIDCache, metricNameCache) + if err != nil { + curr.MustClose() + return nil, nil, fmt.Errorf("cannot open prev indexdb table at %q: %s", prevPath, err) + } + + return curr, prev, nil +} + +var indexDBTableNameRegexp = regexp.MustCompile("^[0-9A-F]{16}$") + +func nextIndexDBTableName() string { + n := atomic.AddUint64(&indexDBTableIdx, 1) + return fmt.Sprintf("%016X", n) +} + +var indexDBTableIdx = uint64(time.Now().UnixNano()) diff --git a/lib/storage/storage_test.go b/lib/storage/storage_test.go new file mode 100644 index 000000000..5dc2b1dd6 --- /dev/null +++ b/lib/storage/storage_test.go @@ -0,0 +1,616 @@ +package storage + +import ( + "fmt" + "math/rand" + "os" + "reflect" + "strings" + "testing" + "testing/quick" + "time" +) + +func TestMetricRowMarshalUnmarshal(t *testing.T) { + var buf []byte + typ := reflect.TypeOf(&MetricRow{}) + rnd := rand.New(rand.NewSource(1)) + + for i := 0; i < 1000; i++ { + v, ok := quick.Value(typ, rnd) + if !ok { + t.Fatalf("cannot create random MetricRow via quick.Value") + } + mr1 := v.Interface().(*MetricRow) + if mr1 == nil { + continue + } + + buf = mr1.Marshal(buf[:0]) + var mr2 MetricRow + tail, err := mr2.Unmarshal(buf) + if err != nil { + t.Fatalf("cannot unmarshal mr1=%s: %s", mr1, err) + } + if len(tail) > 0 { + t.Fatalf("non-empty tail returned after MetricRow.Unmarshal for mr1=%s", mr1) + } + if mr1.MetricNameRaw == nil { + mr1.MetricNameRaw = []byte{} + } + if mr2.MetricNameRaw == nil { + mr2.MetricNameRaw = []byte{} + } + if !reflect.DeepEqual(mr1, &mr2) { + t.Fatalf("mr1 should match mr2; got\nmr1=%s\nmr2=%s", mr1, &mr2) + } + } +} + +func TestNextRetentionDuration(t *testing.T) { + for retentionMonths := 1; retentionMonths < 360; retentionMonths++ { + currTime := time.Now().UTC() + + d := nextRetentionDuration(retentionMonths) + if d < 0 { + nextTime := time.Now().UTC().Add(d) + t.Fatalf("unexected retention duration for retentionMonths=%d; got %s; must be %s + %d months", retentionMonths, nextTime, currTime, retentionMonths) + } + } +} + +func TestStorageOpenClose(t *testing.T) { + path := "TestStorageOpenClose" + for i := 0; i < 10; i++ { + s, err := OpenStorage(path, -1) + if err != nil { + t.Fatalf("cannot open storage: %s", err) + } + s.MustClose() + } + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } +} + +func TestStorageOpenMultipleTimes(t *testing.T) { + path := "TestStorageOpenMultipleTimes" + s1, err := OpenStorage(path, -1) + if err != nil { + t.Fatalf("cannot open storage the first time: %s", err) + } + + for i := 0; i < 10; i++ { + s2, err := OpenStorage(path, -1) + if err == nil { + s2.MustClose() + t.Fatalf("expecting non-nil error when opening already opened storage") + } + } + s1.MustClose() + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } +} + +func TestStorageRandTimestamps(t *testing.T) { + path := "TestStorageRandTimestamps" + retentionMonths := 60 + s, err := OpenStorage(path, retentionMonths) + if err != nil { + t.Fatalf("cannot open storage: %s", err) + } + t.Run("serial", func(t *testing.T) { + for i := 0; i < 3; i++ { + if err := testStorageRandTimestamps(s); err != nil { + t.Fatal(err) + } + s.MustClose() + s, err = OpenStorage(path, retentionMonths) + } + }) + t.Run("concurrent", func(t *testing.T) { + ch := make(chan error, 3) + for i := 0; i < cap(ch); i++ { + go func() { + var err error + for i := 0; i < 2; i++ { + err = testStorageRandTimestamps(s) + } + ch <- err + }() + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatal(err) + } + case <-time.After(time.Second * 10): + t.Fatal("timeout") + } + } + }) + s.MustClose() + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } +} + +func testStorageRandTimestamps(s *Storage) error { + const rowsPerAdd = 1e3 + const addsCount = 2 + typ := reflect.TypeOf(int64(0)) + rnd := rand.New(rand.NewSource(1)) + + for i := 0; i < addsCount; i++ { + var mrs []MetricRow + var mn MetricName + mn.Tags = []Tag{ + {[]byte("job"), []byte("webservice")}, + {[]byte("instance"), []byte("1.2.3.4")}, + } + for j := 0; j < rowsPerAdd; j++ { + mn.MetricGroup = []byte(fmt.Sprintf("metric_%d", rand.Intn(100))) + metricNameRaw := mn.marshalRaw(nil) + timestamp := int64(rnd.NormFloat64() * 1e12) + if j%2 == 0 { + ts, ok := quick.Value(typ, rnd) + if !ok { + return fmt.Errorf("cannot create random timestamp via quick.Value") + } + timestamp = ts.Interface().(int64) + } + value := rnd.NormFloat64() * 1e12 + + mr := MetricRow{ + MetricNameRaw: metricNameRaw, + Timestamp: timestamp, + Value: value, + } + mrs = append(mrs, mr) + } + if err := s.AddRows(mrs, defaultPrecisionBits); err != nil { + if !strings.Contains(err.Error(), "too big timestamp") { + return fmt.Errorf("unexpected error when adding mrs: %s", err) + } + } + } + + // Verify the storage contains rows. + var m Metrics + s.UpdateMetrics(&m) + if m.TableMetrics.SmallRowsCount == 0 { + return fmt.Errorf("expecting at least one row in the table") + } + return nil +} + +func TestStorageDeleteMetrics(t *testing.T) { + path := "TestStorageDeleteMetrics" + s, err := OpenStorage(path, 0) + if err != nil { + t.Fatalf("cannot open storage: %s", err) + } + + // Verify no tag keys exist + tks, err := s.SearchTagKeys(1e5) + if err != nil { + t.Fatalf("error in SearchTagKeys at the start: %s", err) + } + if len(tks) != 0 { + t.Fatalf("found non-empty tag keys at the start: %q", tks) + } + + t.Run("serial", func(t *testing.T) { + for i := 0; i < 3; i++ { + if err = testStorageDeleteMetrics(s, 0); err != nil { + t.Fatalf("unexpected error: %s", err) + } + + // Re-open the storage in order to check how deleted metricIDs + // are persisted. + s.MustClose() + s, err = OpenStorage(path, 0) + if err != nil { + t.Fatalf("cannot open storage after closing: %s", err) + } + } + }) + + t.Run("concurrent", func(t *testing.T) { + ch := make(chan error, 3) + for i := 0; i < cap(ch); i++ { + go func(workerNum int) { + var err error + for j := 0; j < 2; j++ { + err = testStorageDeleteMetrics(s, workerNum) + if err != nil { + break + } + } + ch <- err + }(i) + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(30 * time.Second): + t.Fatalf("timeout") + } + } + }) + + // Verify no more tag keys exist + tks, err = s.SearchTagKeys(1e5) + if err != nil { + t.Fatalf("error in SearchTagKeys after the test: %s", err) + } + if len(tks) != 0 { + t.Fatalf("found non-empty tag keys after the test: %q", tks) + } + + s.MustClose() + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } +} + +func testStorageDeleteMetrics(s *Storage, workerNum int) error { + const rowsPerMetric = 100 + const metricsCount = 30 + + workerTag := []byte(fmt.Sprintf("workerTag_%d", workerNum)) + + tksAll := make(map[string]bool) + tksAll[""] = true // __name__ + for i := 0; i < metricsCount; i++ { + var mrs []MetricRow + var mn MetricName + job := fmt.Sprintf("job_%d_%d", i, workerNum) + instance := fmt.Sprintf("instance_%d_%d", i, workerNum) + mn.Tags = []Tag{ + {[]byte("job"), []byte(job)}, + {[]byte("instance"), []byte(instance)}, + {workerTag, []byte("foobar")}, + } + for i := range mn.Tags { + tksAll[string(mn.Tags[i].Key)] = true + } + mn.MetricGroup = []byte(fmt.Sprintf("metric_%d_%d", i, workerNum)) + metricNameRaw := mn.marshalRaw(nil) + + for j := 0; j < rowsPerMetric; j++ { + timestamp := rand.Int63n(1e10) + value := rand.NormFloat64() * 1e6 + + mr := MetricRow{ + MetricNameRaw: metricNameRaw, + Timestamp: timestamp, + Value: value, + } + mrs = append(mrs, mr) + } + if err := s.AddRows(mrs, defaultPrecisionBits); err != nil { + return fmt.Errorf("unexpected error when adding mrs: %s", err) + } + } + s.debugFlush() + + // Verify tag values exist + tvs, err := s.SearchTagValues(workerTag, 1e5) + if err != nil { + return fmt.Errorf("error in SearchTagValues before metrics removal: %s", err) + } + if len(tvs) == 0 { + return fmt.Errorf("unexpected empty number of tag values for workerTag") + } + + // Verify tag keys exist + tks, err := s.SearchTagKeys(1e5) + if err != nil { + return fmt.Errorf("error in SearchTagKeys before metrics removal: %s", err) + } + if err := checkTagKeys(tks, tksAll); err != nil { + return fmt.Errorf("unexpected tag keys before metrics removal: %s", err) + } + + var sr Search + tr := TimeRange{ + MinTimestamp: 0, + MaxTimestamp: 2e10, + } + metricBlocksCount := func(tfs *TagFilters) int { + n := 0 + sr.Init(s, []*TagFilters{tfs}, tr, 1e5) + for sr.NextMetricBlock() { + n++ + } + sr.MustClose() + return n + } + for i := 0; i < metricsCount; i++ { + tfs := NewTagFilters() + if err := tfs.Add(nil, []byte("metric_.+"), false, true); err != nil { + return fmt.Errorf("cannot add regexp tag filter: %s", err) + } + job := fmt.Sprintf("job_%d_%d", i, workerNum) + if err := tfs.Add([]byte("job"), []byte(job), false, false); err != nil { + return fmt.Errorf("cannot add job tag filter: %s", err) + } + if n := metricBlocksCount(tfs); n == 0 { + return fmt.Errorf("expecting non-zero number of metric blocks for tfs=%s", tfs) + } + deletedCount, err := s.DeleteMetrics([]*TagFilters{tfs}) + if err != nil { + return fmt.Errorf("cannot delete metrics: %s", err) + } + if deletedCount == 0 { + return fmt.Errorf("expecting non-zero number of deleted metrics") + } + if n := metricBlocksCount(tfs); n != 0 { + return fmt.Errorf("expecting zero metric blocks after DeleteMetrics call for tfs=%s; got %d blocks", tfs, n) + } + + // Try deleting empty tfss + deletedCount, err = s.DeleteMetrics(nil) + if err != nil { + return fmt.Errorf("cannot delete empty tfss: %s", err) + } + if deletedCount != 0 { + return fmt.Errorf("expecting zero deleted metrics for empty tfss; got %d", deletedCount) + } + } + + // Make sure no more metrics left for the given workerNum + tfs := NewTagFilters() + if err := tfs.Add(nil, []byte(fmt.Sprintf("metric_.+_%d", workerNum)), false, true); err != nil { + return fmt.Errorf("cannot add regexp tag filter for worker metrics: %s", err) + } + if n := metricBlocksCount(tfs); n != 0 { + return fmt.Errorf("expecting zero metric blocks after deleting all the metrics; got %d blocks", n) + } + tvs, err = s.SearchTagValues(workerTag, 1e5) + if err != nil { + return fmt.Errorf("error in SearchTagValues after all the metrics are removed: %s", err) + } + if len(tvs) != 0 { + return fmt.Errorf("found non-empty tag values for %q after metrics removal: %q", workerTag, tvs) + } + + return nil +} + +func checkTagKeys(tks []string, tksExpected map[string]bool) error { + if len(tks) < len(tksExpected) { + return fmt.Errorf("unexpected number of tag keys found; got %d; want at least %d; tks=%q, tksExpected=%v", len(tks), len(tksExpected), tks, tksExpected) + } + hasItem := func(k string, tks []string) bool { + for _, kk := range tks { + if k == kk { + return true + } + } + return false + } + for k := range tksExpected { + if !hasItem(k, tks) { + return fmt.Errorf("cannot find %q in tag keys %q", k, tks) + } + } + return nil +} + +func TestStorageAddRows(t *testing.T) { + path := "TestStorageAddRows" + s, err := OpenStorage(path, 0) + if err != nil { + t.Fatalf("cannot open storage: %s", err) + } + t.Run("serial", func(t *testing.T) { + if err := testStorageAddRows(s); err != nil { + t.Fatalf("unexpected error: %s", err) + } + }) + t.Run("concurrent", func(t *testing.T) { + ch := make(chan error, 3) + for i := 0; i < cap(ch); i++ { + go func() { + ch <- testStorageAddRows(s) + }() + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(3 * time.Second): + t.Fatalf("timeout") + } + } + }) + s.MustClose() + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } +} + +func testStorageAddRows(s *Storage) error { + const rowsPerAdd = 1e3 + const addsCount = 10 + + for i := 0; i < addsCount; i++ { + var mrs []MetricRow + var mn MetricName + mn.Tags = []Tag{ + {[]byte("job"), []byte("webservice")}, + {[]byte("instance"), []byte("1.2.3.4")}, + } + for j := 0; j < rowsPerAdd; j++ { + mn.MetricGroup = []byte(fmt.Sprintf("metric_%d", rand.Intn(100))) + metricNameRaw := mn.marshalRaw(nil) + timestamp := rand.Int63n(1e10) + value := rand.NormFloat64() * 1e6 + + mr := MetricRow{ + MetricNameRaw: metricNameRaw, + Timestamp: timestamp, + Value: value, + } + mrs = append(mrs, mr) + } + if err := s.AddRows(mrs, defaultPrecisionBits); err != nil { + return fmt.Errorf("unexpected error when adding mrs: %s", err) + } + } + + // Verify the storage contains rows. + minRowsExpected := uint64(rowsPerAdd) * addsCount + var m Metrics + s.UpdateMetrics(&m) + if m.TableMetrics.SmallRowsCount < minRowsExpected { + return fmt.Errorf("expecting at least %d rows in the table; got %d", minRowsExpected, m.TableMetrics.SmallRowsCount) + } + + // Try creating a snapshot from the storage. + snapshotName, err := s.CreateSnapshot() + if err != nil { + return fmt.Errorf("cannot create snapshot from the storage: %s", err) + } + + // Verify the snapshot is visible + snapshots, err := s.ListSnapshots() + if err != nil { + return fmt.Errorf("cannot list snapshots: %s", err) + } + if !containsString(snapshots, snapshotName) { + return fmt.Errorf("cannot find snapshot %q in %q", snapshotName, snapshots) + } + + // Try opening the storage from snapshot. + snapshotPath := s.path + "/snapshots/" + snapshotName + s1, err := OpenStorage(snapshotPath, 0) + if err != nil { + return fmt.Errorf("cannot open storage from snapshot: %s", err) + } + + // Verify the snapshot contains rows + var m1 Metrics + s1.UpdateMetrics(&m1) + if m1.TableMetrics.SmallRowsCount < minRowsExpected { + return fmt.Errorf("snapshot %q must contain at least %d rows; got %d", snapshotPath, minRowsExpected, m1.TableMetrics.SmallRowsCount) + } + + s1.MustClose() + + // Delete the snapshot and make sure it is no longer visible. + if err := s.DeleteSnapshot(snapshotName); err != nil { + return fmt.Errorf("cannot delete snapshot %q: %s", snapshotName, err) + } + snapshots, err = s.ListSnapshots() + if err != nil { + return fmt.Errorf("cannot list snapshots: %s", err) + } + if containsString(snapshots, snapshotName) { + return fmt.Errorf("snapshot %q must be deleted, but is still visible in %q", snapshotName, snapshots) + } + + return nil +} + +func TestStorageRotateIndexDB(t *testing.T) { + path := "TestStorageRotateIndexDB" + s, err := OpenStorage(path, 0) + if err != nil { + t.Fatalf("cannot open storage: %s", err) + } + + // Start indexDB rotater in a separate goroutine + stopCh := make(chan struct{}) + rotateDoneCh := make(chan struct{}) + go func() { + for { + select { + case <-stopCh: + close(rotateDoneCh) + return + default: + time.Sleep(time.Millisecond) + s.mustRotateIndexDB() + } + } + }() + + // Run concurrent workers that insert / select data from the storage. + ch := make(chan error, 3) + for i := 0; i < cap(ch); i++ { + go func(workerNum int) { + ch <- testStorageAddMetrics(s, workerNum) + }(i) + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + case <-time.After(10 * time.Second): + t.Fatalf("timeout") + } + } + + close(stopCh) + <-rotateDoneCh + + s.MustClose() + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } +} + +func testStorageAddMetrics(s *Storage, workerNum int) error { + const rowsCount = 1e3 + + var mn MetricName + mn.Tags = []Tag{ + {[]byte("job"), []byte(fmt.Sprintf("webservice_%d", workerNum))}, + {[]byte("instance"), []byte("1.2.3.4")}, + } + for i := 0; i < rowsCount; i++ { + mn.MetricGroup = []byte(fmt.Sprintf("metric_%d_%d", workerNum, rand.Intn(10))) + metricNameRaw := mn.marshalRaw(nil) + timestamp := rand.Int63n(1e10) + value := rand.NormFloat64() * 1e6 + + mr := MetricRow{ + MetricNameRaw: metricNameRaw, + Timestamp: timestamp, + Value: value, + } + if err := s.AddRows([]MetricRow{mr}, defaultPrecisionBits); err != nil { + return fmt.Errorf("unexpected error when adding mrs: %s", err) + } + } + + // Verify the storage contains rows. + minRowsExpected := uint64(rowsCount) + var m Metrics + s.UpdateMetrics(&m) + if m.TableMetrics.SmallRowsCount < minRowsExpected { + return fmt.Errorf("expecting at least %d rows in the table; got %d", minRowsExpected, m.TableMetrics.SmallRowsCount) + } + return nil +} + +func containsString(a []string, s string) bool { + for i := range a { + if a[i] == s { + return true + } + } + return false +} diff --git a/lib/storage/storage_timing_test.go b/lib/storage/storage_timing_test.go new file mode 100644 index 000000000..abdd5f46b --- /dev/null +++ b/lib/storage/storage_timing_test.go @@ -0,0 +1,58 @@ +package storage + +import ( + "fmt" + "os" + "sync/atomic" + "testing" +) + +func BenchmarkStorageAddRows(b *testing.B) { + for _, rowsPerBatch := range []int{1, 10, 100, 1000} { + b.Run(fmt.Sprintf("rowsPerBatch_%d", rowsPerBatch), func(b *testing.B) { + benchmarkStorageAddRows(b, rowsPerBatch) + }) + } +} + +func benchmarkStorageAddRows(b *testing.B, rowsPerBatch int) { + path := fmt.Sprintf("BenchmarkStorageAddRows_%d", rowsPerBatch) + s, err := OpenStorage(path, 0) + if err != nil { + b.Fatalf("cannot open storage at %q: %s", path, err) + } + defer func() { + s.MustClose() + if err := os.RemoveAll(path); err != nil { + b.Fatalf("cannot remove storage at %q: %s", path, err) + } + }() + + var globalOffset uint64 + + b.SetBytes(int64(rowsPerBatch)) + b.ReportAllocs() + b.ResetTimer() + b.RunParallel(func(pb *testing.PB) { + mrs := make([]MetricRow, rowsPerBatch) + var mn MetricName + mn.MetricGroup = []byte("rps") + mn.Tags = []Tag{ + {[]byte("job"), []byte("webservice")}, + {[]byte("instance"), []byte("1.2.3.4")}, + } + for pb.Next() { + offset := int(atomic.AddUint64(&globalOffset, uint64(rowsPerBatch))) + for i := 0; i < rowsPerBatch; i++ { + mr := &mrs[i] + mr.MetricNameRaw = mn.marshalRaw(mr.MetricNameRaw[:0]) + mr.Timestamp = int64(offset + i) + mr.Value = float64(offset + i) + } + if err := s.AddRows(mrs, defaultPrecisionBits); err != nil { + panic(fmt.Errorf("cannot add rows to storage: %s", err)) + } + } + }) + b.StopTimer() +} diff --git a/lib/storage/table.go b/lib/storage/table.go new file mode 100644 index 000000000..b1f798b9b --- /dev/null +++ b/lib/storage/table.go @@ -0,0 +1,488 @@ +package storage + +import ( + "fmt" + "os" + "path/filepath" + "sync" + "sync/atomic" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/fs" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "golang.org/x/sys/unix" +) + +// table represents a single table with time series data. +type table struct { + path string + smallPartitionsPath string + bigPartitionsPath string + + getDeletedMetricIDs func() map[uint64]struct{} + + ptws []*partitionWrapper + ptwsLock sync.Mutex + + flockF *os.File + + stop chan struct{} + + retentionMilliseconds int64 + retentionWatcherWG sync.WaitGroup +} + +// partitionWrapper provides refcounting mechanism for the partition. +type partitionWrapper struct { + pt *partition + refCount uint64 + + // The partition must be dropped if mustDrop > 0 + mustDrop uint64 +} + +func (ptw *partitionWrapper) incRef() { + atomic.AddUint64(&ptw.refCount, 1) +} + +func (ptw *partitionWrapper) decRef() { + n := atomic.AddUint64(&ptw.refCount, ^uint64(0)) + if int64(n) < 0 { + logger.Panicf("BUG: pts.refCount must be positive; got %d", int64(n)) + } + if n > 0 { + return + } + + // refCount is zero. Close the partition. + ptw.pt.MustClose() + + if atomic.LoadUint64(&ptw.mustDrop) == 0 { + ptw.pt = nil + return + } + + // ptw.mustDrop > 0. Drop the partition. + ptw.pt.Drop() + ptw.pt = nil +} + +func (ptw *partitionWrapper) scheduleToDrop() { + atomic.AddUint64(&ptw.mustDrop, 1) +} + +// openTable opens a table on the given path with the given retentionMonths. +// +// The table is created if it doesn't exist. +// +// Data older than the retentionMonths may be dropped at any time. +func openTable(path string, retentionMonths int, getDeletedMetricIDs func() map[uint64]struct{}) (*table, error) { + path = filepath.Clean(path) + + // Create a directory for the table if it doesn't exist yet. + if err := fs.MkdirAllIfNotExist(path); err != nil { + return nil, fmt.Errorf("cannot create directory for table %q: %s", path, err) + } + + flockFile := path + "/flock.lock" + flockF, err := os.Create(flockFile) + if err != nil { + return nil, fmt.Errorf("cannot create lock file %q: %s", flockFile, err) + } + if err := unix.Flock(int(flockF.Fd()), unix.LOCK_EX|unix.LOCK_NB); err != nil { + return nil, fmt.Errorf("cannot acquire lock on file %q: %s", flockFile, err) + } + + // Create directories for small and big partitions if they don't exist yet. + smallPartitionsPath := path + "/small" + if err := fs.MkdirAllIfNotExist(smallPartitionsPath); err != nil { + return nil, fmt.Errorf("cannot create directory for small partitions %q: %s", smallPartitionsPath, err) + } + smallSnapshotsPath := smallPartitionsPath + "/snapshots" + if err := fs.MkdirAllIfNotExist(smallSnapshotsPath); err != nil { + return nil, fmt.Errorf("cannot create %q: %s", smallSnapshotsPath, err) + } + bigPartitionsPath := path + "/big" + if err := fs.MkdirAllIfNotExist(bigPartitionsPath); err != nil { + return nil, fmt.Errorf("cannot create directory for big partitions %q: %s", bigPartitionsPath, err) + } + bigSnapshotsPath := bigPartitionsPath + "/snapshots" + if err := fs.MkdirAllIfNotExist(bigSnapshotsPath); err != nil { + return nil, fmt.Errorf("cannot create %q: %s", bigSnapshotsPath, err) + } + + // Open partitions. + pts, err := openPartitions(smallPartitionsPath, bigPartitionsPath, getDeletedMetricIDs) + if err != nil { + return nil, fmt.Errorf("cannot open partitions in the table %q: %s", path, err) + } + + tb := &table{ + path: path, + smallPartitionsPath: smallPartitionsPath, + bigPartitionsPath: bigPartitionsPath, + getDeletedMetricIDs: getDeletedMetricIDs, + + flockF: flockF, + + stop: make(chan struct{}), + } + for _, pt := range pts { + tb.addPartitionNolock(pt) + } + if retentionMonths <= 0 || retentionMonths > maxRetentionMonths { + retentionMonths = maxRetentionMonths + } + tb.retentionMilliseconds = int64(retentionMonths) * 31 * 24 * 3600 * 1e3 + + tb.startRetentionWatcher() + return tb, nil +} + +// CreateSnapshot creates tb snapshot and returns paths to small and big parts of it. +func (tb *table) CreateSnapshot(snapshotName string) (string, string, error) { + logger.Infof("creating table snapshot of %q...", tb.path) + startTime := time.Now() + + ptws := tb.GetPartitions(nil) + defer tb.PutPartitions(ptws) + + dstSmallDir := fmt.Sprintf("%s/small/snapshots/%s", tb.path, snapshotName) + if err := fs.MkdirAllFailIfExist(dstSmallDir); err != nil { + return "", "", fmt.Errorf("cannot create dir %q: %s", dstSmallDir, err) + } + dstBigDir := fmt.Sprintf("%s/big/snapshots/%s", tb.path, snapshotName) + if err := fs.MkdirAllFailIfExist(dstBigDir); err != nil { + return "", "", fmt.Errorf("cannot create dir %q: %s", dstBigDir, err) + } + + for _, ptw := range ptws { + smallPath := dstSmallDir + "/" + ptw.pt.name + bigPath := dstBigDir + "/" + ptw.pt.name + if err := ptw.pt.CreateSnapshotAt(smallPath, bigPath); err != nil { + return "", "", fmt.Errorf("cannot create snapshot for partition %q in %q: %s", ptw.pt.name, tb.path, err) + } + } + + fs.SyncPath(dstSmallDir) + fs.SyncPath(dstBigDir) + fs.SyncPath(filepath.Dir(dstSmallDir)) + fs.SyncPath(filepath.Dir(dstBigDir)) + + logger.Infof("created table snapshot for %q at (%q, %q) in %s", tb.path, dstSmallDir, dstBigDir, time.Since(startTime)) + return dstSmallDir, dstBigDir, nil +} + +// MustDeleteSnapshot deletes snapshot with the given snapshotName. +func (tb *table) MustDeleteSnapshot(snapshotName string) { + smallDir := fmt.Sprintf("%s/small/snapshots/%s", tb.path, snapshotName) + fs.MustRemoveAllSynced(smallDir) + bigDir := fmt.Sprintf("%s/big/snapshots/%s", tb.path, snapshotName) + fs.MustRemoveAllSynced(bigDir) +} + +func (tb *table) addPartitionNolock(pt *partition) { + ptw := &partitionWrapper{ + pt: pt, + refCount: 1, + } + tb.ptws = append(tb.ptws, ptw) +} + +// MustClose closes the table. +func (tb *table) MustClose() { + close(tb.stop) + tb.retentionWatcherWG.Wait() + + tb.ptwsLock.Lock() + ptws := tb.ptws + tb.ptws = nil + tb.ptwsLock.Unlock() + + // Decrement references to partitions, so they may be eventually closed after + // pending searches are done. + for _, ptw := range ptws { + ptw.decRef() + } + + // Release exclusive lock on the table. + if err := tb.flockF.Close(); err != nil { + logger.Panicf("FATAL: cannot release lock on %q: %s", tb.flockF.Name(), err) + } +} + +// flushRawRows flushes all the pending rows, so they become visible to search. +// +// This function is for debug purposes only. +func (tb *table) flushRawRows() { + ptws := tb.GetPartitions(nil) + defer tb.PutPartitions(ptws) + + for _, ptw := range ptws { + ptw.pt.flushRawRows(nil, true) + } +} + +// TableMetrics contains essential metrics for the table. +type TableMetrics struct { + partitionMetrics + + PartitionsRefCount uint64 +} + +// UpdateMetrics updates m with metrics from tb. +func (tb *table) UpdateMetrics(m *TableMetrics) { + tb.ptwsLock.Lock() + for _, ptw := range tb.ptws { + ptw.pt.UpdateMetrics(&m.partitionMetrics) + m.PartitionsRefCount += atomic.LoadUint64(&ptw.refCount) + } + tb.ptwsLock.Unlock() +} + +// AddRows adds the given rows to the table tb. +func (tb *table) AddRows(rows []rawRow) error { + if len(rows) == 0 { + return nil + } + + // Verify whether all the rows may be added to a single partition. + ptwsX := getPartitionWrappers() + defer putPartitionWrappers(ptwsX) + + ptwsX.a = tb.GetPartitions(ptwsX.a[:0]) + ptws := ptwsX.a + for _, ptw := range ptws { + singlePt := true + for i := range rows { + if !ptw.pt.HasTimestamp(rows[i].Timestamp) { + singlePt = false + break + } + } + if !singlePt { + continue + } + + // Move the partition with the matching rows to the front of tb.ptws, + // so it will be detected faster next time. + tb.ptwsLock.Lock() + for i := range tb.ptws { + if ptw == tb.ptws[i] { + tb.ptws[0], tb.ptws[i] = tb.ptws[i], tb.ptws[0] + break + } + } + tb.ptwsLock.Unlock() + + // Fast path - add all the rows into the ptw. + ptw.pt.AddRows(rows) + tb.PutPartitions(ptws) + return nil + } + + // Slower path - split rows into per-partition buckets. + ptBuckets := make(map[*partitionWrapper][]rawRow) + var missingRows []rawRow + for i := range rows { + r := &rows[i] + ptFound := false + for _, ptw := range ptws { + if ptw.pt.HasTimestamp(r.Timestamp) { + ptBuckets[ptw] = append(ptBuckets[ptw], *r) + ptFound = true + break + } + } + if !ptFound { + missingRows = append(missingRows, *r) + } + } + + for ptw, ptRows := range ptBuckets { + ptw.pt.AddRows(ptRows) + } + tb.PutPartitions(ptws) + if len(missingRows) == 0 { + return nil + } + + // The slowest path - there are rows that don't fit any existing partition. + // Create new partitions for these rows. + // Do this under tb.ptwsLock. + now := timestampFromTime(time.Now()) + minTimestamp := now - tb.retentionMilliseconds + maxTimestamp := now + 2*24*3600*1000 // allow max +2 days from now due to timezones shit :) + tb.ptwsLock.Lock() + var errors []error + for i := range missingRows { + r := &missingRows[i] + + if r.Timestamp < minTimestamp { + // Silently skip row with too small timestamp, since it should be deleted anyway. + continue + } + if r.Timestamp > maxTimestamp { + err := fmt.Errorf("cannot add row %+v with too big timestamp to table %q; the timestamp cannot be bigger than %d (+2 days from now)", + r, tb.path, maxTimestamp) + errors = append(errors, err) + continue + } + + // Make sure the partition for the r hasn't been added by another goroutines. + ptFound := false + for _, ptw := range tb.ptws { + if ptw.pt.HasTimestamp(r.Timestamp) { + ptFound = true + ptw.pt.AddRows(missingRows[i : i+1]) + break + } + } + if ptFound { + continue + } + + pt, err := createPartition(r.Timestamp, tb.smallPartitionsPath, tb.bigPartitionsPath, tb.getDeletedMetricIDs) + if err != nil { + errors = append(errors, err) + continue + } + pt.AddRows(missingRows[i : i+1]) + tb.addPartitionNolock(pt) + } + tb.ptwsLock.Unlock() + + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + return fmt.Errorf("errors while adding rows to table %q: %s", tb.path, errors[0]) + } + return nil +} + +func (tb *table) startRetentionWatcher() { + tb.retentionWatcherWG.Add(1) + go func() { + tb.retentionWatcher() + tb.retentionWatcherWG.Done() + }() +} + +func (tb *table) retentionWatcher() { + t := time.NewTimer(time.Minute) + for { + select { + case <-tb.stop: + return + case <-t.C: + t.Reset(time.Minute) + } + + minTimestamp := timestampFromTime(time.Now()) - tb.retentionMilliseconds + var ptwsDrop []*partitionWrapper + tb.ptwsLock.Lock() + dst := tb.ptws[:0] + for _, ptw := range tb.ptws { + if ptw.pt.tr.MaxTimestamp < minTimestamp { + ptwsDrop = append(ptwsDrop, ptw) + } else { + dst = append(dst, ptw) + } + } + tb.ptws = dst + tb.ptwsLock.Unlock() + + if len(ptwsDrop) == 0 { + continue + } + + // There are paritions to drop. Drop them. + + // Remove table references from partitions, so they will be eventually + // closed and dropped after all the pending searches are done. + for _, ptw := range ptwsDrop { + ptw.scheduleToDrop() + ptw.decRef() + } + } +} + +// GetPartitions appends tb's partitions snapshot to dst and returns the result. +// +// The returned partitions must be passed to PutPartitions +// when they no longer needed. +func (tb *table) GetPartitions(dst []*partitionWrapper) []*partitionWrapper { + tb.ptwsLock.Lock() + for _, ptw := range tb.ptws { + ptw.incRef() + dst = append(dst, ptw) + } + tb.ptwsLock.Unlock() + + return dst +} + +// PutPartitions deregisters ptws obtained via GetPartitions. +func (tb *table) PutPartitions(ptws []*partitionWrapper) { + for _, ptw := range ptws { + ptw.decRef() + } +} + +func openPartitions(smallPartitionsPath, bigPartitionsPath string, getDeletedMetricIDs func() map[uint64]struct{}) ([]*partition, error) { + smallD, err := os.Open(smallPartitionsPath) + if err != nil { + return nil, fmt.Errorf("cannot open directory with small partitions %q: %s", smallPartitionsPath, err) + } + defer fs.MustClose(smallD) + + fis, err := smallD.Readdir(-1) + if err != nil { + return nil, fmt.Errorf("cannot read directory with small partitions %q: %s", smallPartitionsPath, err) + } + var pts []*partition + for _, fi := range fis { + if !fs.IsDirOrSymlink(fi) { + // Skip non-directories + continue + } + ptName := fi.Name() + if ptName == "snapshots" { + // Skipe directory with snapshots + continue + } + smallPartsPath := smallPartitionsPath + "/" + ptName + bigPartsPath := bigPartitionsPath + "/" + ptName + pt, err := openPartition(smallPartsPath, bigPartsPath, getDeletedMetricIDs) + if err != nil { + mustClosePartitions(pts) + return nil, fmt.Errorf("cannot open partition %q: %s", ptName, err) + } + pts = append(pts, pt) + } + return pts, nil +} + +func mustClosePartitions(pts []*partition) { + for _, pt := range pts { + pt.MustClose() + } +} + +type partitionWrappers struct { + a []*partitionWrapper +} + +func getPartitionWrappers() *partitionWrappers { + v := ptwsPool.Get() + if v == nil { + return &partitionWrappers{} + } + return v.(*partitionWrappers) +} + +func putPartitionWrappers(ptwsX *partitionWrappers) { + ptwsX.a = ptwsX.a[:0] + ptwsPool.Put(ptwsX) +} + +var ptwsPool sync.Pool diff --git a/lib/storage/table_search.go b/lib/storage/table_search.go new file mode 100644 index 000000000..8a9c31129 --- /dev/null +++ b/lib/storage/table_search.go @@ -0,0 +1,209 @@ +package storage + +import ( + "container/heap" + "fmt" + "io" + "time" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +// tableSearch performs searches in the table. +type tableSearch struct { + Block *Block + + tb *table + + // ptws hold paritions snapshot for the given table during Init call. + // This snapshot is used for calling table.PutPartitions on tableSearch.MustClose. + ptws []*partitionWrapper + + ptsPool []partitionSearch + ptsHeap partitionSearchHeap + + err error + + nextBlockNoop bool + needClosing bool +} + +func (ts *tableSearch) reset() { + ts.Block = nil + ts.tb = nil + + for i := range ts.ptws { + ts.ptws[i] = nil + } + ts.ptws = ts.ptws[:0] + + for i := range ts.ptsPool { + ts.ptsPool[i].reset() + } + ts.ptsPool = ts.ptsPool[:0] + + for i := range ts.ptsHeap { + ts.ptsHeap[i] = nil + } + ts.ptsHeap = ts.ptsHeap[:0] + + ts.err = nil + ts.nextBlockNoop = false + ts.needClosing = false +} + +// Init initializes the ts. +// +// MustClose must be called then the tableSearch is done. +func (ts *tableSearch) Init(tb *table, tsids []TSID, tr TimeRange) { + if ts.needClosing { + logger.Panicf("BUG: missing MustClose call before the next call to Init") + } + + // Adjust tr.MinTimestamp, so it doesn't obtain data older + // than the tb retention. + now := timestampFromTime(time.Now()) + minTimestamp := now - tb.retentionMilliseconds + if tr.MinTimestamp < minTimestamp { + tr.MinTimestamp = minTimestamp + } + + ts.reset() + ts.tb = tb + ts.needClosing = true + + if len(tsids) == 0 { + // Fast path - zero tsids. + ts.err = io.EOF + return + } + + ts.ptws = tb.GetPartitions(ts.ptws[:0]) + + // Initialize the ptsPool. + if n := len(ts.ptws) - cap(ts.ptsPool); n > 0 { + ts.ptsPool = append(ts.ptsPool[:cap(ts.ptsPool)], make([]partitionSearch, n)...) + } + ts.ptsPool = ts.ptsPool[:len(ts.ptws)] + for i, ptw := range ts.ptws { + ts.ptsPool[i].Init(ptw.pt, tsids, tr) + } + + // Initialize the ptsHeap. + var errors []error + ts.ptsHeap = ts.ptsHeap[:0] + for i := range ts.ptsPool { + pts := &ts.ptsPool[i] + if !pts.NextBlock() { + if err := pts.Error(); err != nil { + errors = append(errors, err) + } + continue + } + ts.ptsHeap = append(ts.ptsHeap, pts) + } + if len(errors) > 0 { + // Return only the first error, since it has no sense in returning all errors. + ts.err = fmt.Errorf("cannot initialize table search: %s", errors[0]) + return + } + if len(ts.ptsHeap) == 0 { + ts.err = io.EOF + return + } + heap.Init(&ts.ptsHeap) + ts.Block = ts.ptsHeap[0].Block + ts.nextBlockNoop = true +} + +// NextBlock advances to the next block. +// +// The blocks are sorted by (TDIS, MinTimestamp). Two subsequent blocks +// for the same TSID may contain overlapped time ranges. +func (ts *tableSearch) NextBlock() bool { + if ts.err != nil { + return false + } + if ts.nextBlockNoop { + ts.nextBlockNoop = false + return true + } + + ts.err = ts.nextBlock() + if ts.err != nil { + if ts.err != io.EOF { + ts.err = fmt.Errorf("cannot obtain the next block to search in the table: %s", ts.err) + } + return false + } + return true +} + +func (ts *tableSearch) nextBlock() error { + ptsMin := ts.ptsHeap[0] + if ptsMin.NextBlock() { + heap.Fix(&ts.ptsHeap, 0) + ts.Block = ts.ptsHeap[0].Block + return nil + } + + if err := ptsMin.Error(); err != nil { + return err + } + + heap.Pop(&ts.ptsHeap) + + if len(ts.ptsHeap) == 0 { + return io.EOF + } + + ts.Block = ts.ptsHeap[0].Block + return nil +} + +// Error returns the last error in the ts. +func (ts *tableSearch) Error() error { + if ts.err == io.EOF { + return nil + } + return ts.err +} + +// MustClose closes the ts. +func (ts *tableSearch) MustClose() { + if !ts.needClosing { + logger.Panicf("BUG: missing Init call before MustClose call") + } + for i := range ts.ptsPool { + ts.ptsPool[i].MustClose() + } + ts.tb.PutPartitions(ts.ptws) + ts.reset() +} + +type partitionSearchHeap []*partitionSearch + +func (ptsh *partitionSearchHeap) Len() int { + return len(*ptsh) +} + +func (ptsh *partitionSearchHeap) Less(i, j int) bool { + x := *ptsh + return x[i].Block.bh.Less(&x[j].Block.bh) +} + +func (ptsh *partitionSearchHeap) Swap(i, j int) { + x := *ptsh + x[i], x[j] = x[j], x[i] +} + +func (ptsh *partitionSearchHeap) Push(x interface{}) { + *ptsh = append(*ptsh, x.(*partitionSearch)) +} + +func (ptsh *partitionSearchHeap) Pop() interface{} { + a := *ptsh + v := a[len(a)-1] + *ptsh = a[:len(a)-1] + return v +} diff --git a/lib/storage/table_search_test.go b/lib/storage/table_search_test.go new file mode 100644 index 000000000..c116e4e84 --- /dev/null +++ b/lib/storage/table_search_test.go @@ -0,0 +1,288 @@ +package storage + +import ( + "fmt" + "math/rand" + "os" + "sort" + "testing" + "time" +) + +func TestTableSearch(t *testing.T) { + var trData TimeRange + trData.fromPartitionTime(time.Now()) + trData.MinTimestamp -= 5 * 365 * 24 * 3600 * 1000 + + t.Run("SinglePartition", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 1, 10, 1000, 10) + }) + + t.Run("SinglePartPerPartition", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 12, 1, 1000, 10) + }) + + t.Run("SingleRowPerPartition", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 12, 100, 1, 10) + }) + + t.Run("SingleTSID", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 12, 5, 1000, 1) + }) + + t.Run("ManyPartitions", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 60, 20, 30, 20) + }) + + t.Run("ManyTSIDs", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 5000, 1000) + }) + + t.Run("ExactTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp, + MaxTimestamp: trData.MaxTimestamp, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) + + t.Run("InnerTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) + + t.Run("OuterTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp - 1e6, + MaxTimestamp: trData.MaxTimestamp + 1e6, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) + + t.Run("LowTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp - 2e6, + MaxTimestamp: trData.MinTimestamp - 1e6, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) + + t.Run("HighTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MaxTimestamp + 1e6, + MaxTimestamp: trData.MaxTimestamp + 2e6, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) + + t.Run("LowerEndTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp - 1e6, + MaxTimestamp: trData.MaxTimestamp - 4e3, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) + + t.Run("HigherEndTimeRange", func(t *testing.T) { + trSearch := TimeRange{ + MinTimestamp: trData.MinTimestamp + 4e3, + MaxTimestamp: trData.MaxTimestamp + 1e6, + } + testTableSearchEx(t, trData, trSearch, 2, 5, 1000, 10) + }) +} + +func testTableSearchEx(t *testing.T, trData, trSearch TimeRange, partitionsCount, maxPartsPerPartition, maxRowsPerPart, tsidsCount int) { + t.Helper() + + // Generate tsids to search. + var tsids []TSID + var tsid TSID + for i := 0; i < 25; i++ { + tsid.MetricID = uint64(rand.Intn(tsidsCount * 2)) + tsids = append(tsids, tsid) + } + sort.Slice(tsids, func(i, j int) bool { return tsids[i].Less(&tsids[j]) }) + + // Generate the expected blocks. + + var r rawRow + r.PrecisionBits = 24 + + rowsCountExpected := int64(0) + rbsExpected := []rawBlock{} + var ptr TimeRange + ptr.fromPartitionTimestamp(trData.MinTimestamp) + var rowss [][]rawRow + for i := 0; i < partitionsCount; i++ { + partsCount := rand.Intn(maxPartsPerPartition) + 1 + for j := 0; j < partsCount; j++ { + var rows []rawRow + timestamp := ptr.MinTimestamp + rowsCount := rand.Intn(maxRowsPerPart) + 1 + for k := 0; k < rowsCount; k++ { + r.TSID.MetricID = uint64(rand.Intn(tsidsCount)) + r.Timestamp = timestamp + r.Value = float64(int(rand.NormFloat64() * 1e5)) + + timestamp += int64(rand.Intn(1e4)) + 1 + if timestamp > ptr.MaxTimestamp { + break + } + rows = append(rows, r) + rowsCountExpected++ + } + rbs := getTestExpectedRawBlocks(rows, tsids, trSearch) + rbsExpected = append(rbsExpected, rbs...) + rowss = append(rowss, rows) + } + // Go to the next partition. + ptr.fromPartitionTimestamp(ptr.MaxTimestamp + 1) + if ptr.MaxTimestamp > trData.MaxTimestamp { + break + } + } + sort.Slice(rbsExpected, func(i, j int) bool { + a, b := rbsExpected[i], rbsExpected[j] + if a.TSID.Less(&b.TSID) { + return true + } + if b.TSID.Less(&a.TSID) { + return false + } + return a.Timestamps[0] < b.Timestamps[0] + }) + + // Create a table from rowss and test search on it. + tb, err := openTable("./test-table", -1, nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot create table: %s", err) + } + defer func() { + if err := os.RemoveAll("./test-table"); err != nil { + t.Fatalf("cannot remove table directory: %s", err) + } + }() + for _, rows := range rowss { + if err := tb.AddRows(rows); err != nil { + t.Fatalf("cannot add rows to table: %s", err) + } + + // Flush rows to parts. + tb.flushRawRows() + } + testTableSearch(t, tb, tsids, trSearch, rbsExpected, -1) + tb.MustClose() + + // Open the created table and test search on it. + tb, err = openTable("./test-table", -1, nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot open table: %s", err) + } + testTableSearch(t, tb, tsids, trSearch, rbsExpected, rowsCountExpected) + tb.MustClose() +} + +func testTableSearch(t *testing.T, tb *table, tsids []TSID, tr TimeRange, rbsExpected []rawBlock, rowsCountExpected int64) { + t.Helper() + + if err := testTableSearchSerial(tb, tsids, tr, rbsExpected, rowsCountExpected); err != nil { + t.Fatalf("unexpected error in serial table search: %s", err) + } + + ch := make(chan error, 5) + for i := 0; i < cap(ch); i++ { + go func() { + ch <- testTableSearchSerial(tb, tsids, tr, rbsExpected, rowsCountExpected) + }() + } + for i := 0; i < cap(ch); i++ { + select { + case err := <-ch: + if err != nil { + t.Fatalf("unexpected error in concurrent table search: %s", err) + } + case <-time.After(time.Second): + t.Fatalf("timeout in concurrent table search") + } + } +} + +func testTableSearchSerial(tb *table, tsids []TSID, tr TimeRange, rbsExpected []rawBlock, rowsCountExpected int64) error { + if rowsCountExpected >= 0 { + // Verify rows count only on the table opened from file. + // + // The online created table may not contain all the rows, since + // they may race with raw rows flusher. + var m TableMetrics + tb.UpdateMetrics(&m) + rowsCount := m.BigRowsCount + m.SmallRowsCount + if rowsCount != uint64(rowsCountExpected) { + return fmt.Errorf("unexpected rows count in the table; got %d; want %d", rowsCount, rowsCountExpected) + } + } + + bs := []Block{} + var ts tableSearch + ts.Init(tb, tsids, tr) + for ts.NextBlock() { + var b Block + b.CopyFrom(ts.Block) + bs = append(bs, b) + } + if err := ts.Error(); err != nil { + return fmt.Errorf("unexpected error: %s", err) + } + ts.MustClose() + rbs := newTestRawBlocks(bs, tr) + if err := testEqualRawBlocks(rbs, rbsExpected); err != nil { + return fmt.Errorf("unequal blocks: %s", err) + } + + if rowsCountExpected >= 0 { + var m TableMetrics + tb.UpdateMetrics(&m) + rowsCount := m.BigRowsCount + m.SmallRowsCount + if rowsCount != uint64(rowsCountExpected) { + return fmt.Errorf("unexpected rows count in the table; got %d; want %d", rowsCount, rowsCountExpected) + } + } + + // verify that empty tsids returns empty result + ts.Init(tb, []TSID{}, tr) + if ts.NextBlock() { + return fmt.Errorf("unexpected block got for an empty tsids list: %+v", ts.Block) + } + if err := ts.Error(); err != nil { + return fmt.Errorf("unexpected error on empty tsids list: %s", err) + } + ts.MustClose() + return nil +} diff --git a/lib/storage/table_search_timing_test.go b/lib/storage/table_search_timing_test.go new file mode 100644 index 000000000..0aec43f90 --- /dev/null +++ b/lib/storage/table_search_timing_test.go @@ -0,0 +1,139 @@ +package storage + +import ( + "fmt" + "math/rand" + "os" + "runtime" + "sync" + "sync/atomic" + "testing" + "time" +) + +func TestMain(m *testing.M) { + n := m.Run() + if err := os.RemoveAll("./benchmarkTableSearch"); err != nil { + panic(fmt.Errorf("cannot remove benchmark tables: %s", err)) + } + os.Exit(n) +} + +func BenchmarkTableSearch(b *testing.B) { + for _, rowsCount := range []int{1e5, 1e6, 1e7, 1e8} { + b.Run(fmt.Sprintf("rowsCount_%d", rowsCount), func(b *testing.B) { + for _, tsidsCount := range []int{1e3, 1e4} { + b.Run(fmt.Sprintf("tsidsCount_%d", tsidsCount), func(b *testing.B) { + for _, tsidsSearch := range []int{1, 1e1, 1e2, 1e3, 1e4} { + b.Run(fmt.Sprintf("tsidsSearch_%d", tsidsSearch), func(b *testing.B) { + benchmarkTableSearch(b, rowsCount, tsidsCount, tsidsSearch) + }) + } + }) + } + }) + } +} + +func openBenchTable(b *testing.B, startTimestamp int64, rowsPerInsert, rowsCount, tsidsCount int) *table { + b.Helper() + + path := fmt.Sprintf("./benchmarkTableSearch/rows%d_tsids%d", rowsCount, tsidsCount) + if !createdBenchTables[path] { + createBenchTable(b, path, startTimestamp, rowsPerInsert, rowsCount, tsidsCount) + createdBenchTables[path] = true + } + tb, err := openTable(path, -1, nilGetDeletedMetricIDs) + if err != nil { + b.Fatalf("cnanot open table %q: %s", path, err) + } + + // Verify rows count in the table opened from files. + insertsCount := uint64((rowsCount + rowsPerInsert - 1) / rowsPerInsert) + rowsCountExpected := insertsCount * uint64(rowsPerInsert) + var m TableMetrics + tb.UpdateMetrics(&m) + rowsCountActual := m.BigRowsCount + m.SmallRowsCount + if rowsCountActual != rowsCountExpected { + b.Fatalf("unexpected rows count in the table %q; got %d; want %d", path, rowsCountActual, rowsCountExpected) + } + + return tb +} + +var createdBenchTables = make(map[string]bool) + +func createBenchTable(b *testing.B, path string, startTimestamp int64, rowsPerInsert, rowsCount, tsidsCount int) { + b.Helper() + + tb, err := openTable(path, -1, nilGetDeletedMetricIDs) + if err != nil { + b.Fatalf("cannot open table %q: %s", path, err) + } + + insertsCount := uint64((rowsCount + rowsPerInsert - 1) / rowsPerInsert) + timestamp := uint64(startTimestamp) + + var wg sync.WaitGroup + for k := 0; k < runtime.GOMAXPROCS(-1); k++ { + wg.Add(1) + go func() { + rows := make([]rawRow, rowsPerInsert) + value := float64(100) + for int(atomic.AddUint64(&insertsCount, ^uint64(0))) >= 0 { + for j := 0; j < rowsPerInsert; j++ { + ts := atomic.AddUint64(×tamp, uint64(10+rand.Int63n(2))) + value += float64(int(rand.NormFloat64() * 5)) + + r := &rows[j] + r.PrecisionBits = defaultPrecisionBits + r.TSID.MetricID = uint64(rand.Intn(tsidsCount) + 1) + r.Timestamp = int64(ts) + r.Value = value + } + if err := tb.AddRows(rows); err != nil { + b.Fatalf("cannot add %d rows: %s", rowsPerInsert, err) + } + } + wg.Done() + }() + } + wg.Wait() + + tb.MustClose() +} + +func benchmarkTableSearch(b *testing.B, rowsCount, tsidsCount, tsidsSearch int) { + startTimestamp := timestampFromTime(time.Now()) - 365*24*3600*1000 + rowsPerInsert := int(maxRawRowsPerPartition) + + tb := openBenchTable(b, startTimestamp, rowsPerInsert, rowsCount, tsidsCount) + tr := TimeRange{ + MinTimestamp: startTimestamp, + MaxTimestamp: (1 << 63) - 1, + } + + b.ResetTimer() + b.ReportAllocs() + rowsPerBench := int64(float64(rowsCount) * float64(tsidsSearch) / float64(tsidsCount)) + if rowsPerBench > int64(rowsCount) { + rowsPerBench = int64(rowsCount) + } + b.SetBytes(rowsPerBench) + b.RunParallel(func(pb *testing.PB) { + var ts tableSearch + tsids := make([]TSID, tsidsSearch) + for pb.Next() { + for i := range tsids { + tsids[i].MetricID = 1 + uint64(i) + } + ts.Init(tb, tsids, tr) + for ts.NextBlock() { + } + ts.MustClose() + } + }) + b.StopTimer() + + tb.MustClose() +} diff --git a/lib/storage/table_test.go b/lib/storage/table_test.go new file mode 100644 index 000000000..daeef21ee --- /dev/null +++ b/lib/storage/table_test.go @@ -0,0 +1,59 @@ +package storage + +import ( + "os" + "testing" +) + +func TestTableOpenClose(t *testing.T) { + const path = "TestTableOpenClose" + const retentionMonths = 123 + + if err := os.RemoveAll(path); err != nil { + t.Fatalf("cannot remove %q: %s", path, err) + } + defer func() { + _ = os.RemoveAll(path) + }() + + // Create a new table + tb, err := openTable(path, retentionMonths, nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot create new table: %s", err) + } + + // Close it + tb.MustClose() + + // Re-open created table multiple times. + for i := 0; i < 10; i++ { + tb, err := openTable(path, retentionMonths, nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot open created table: %s", err) + } + tb.MustClose() + } +} + +func TestTableOpenMultipleTimes(t *testing.T) { + const path = "TestTableOpenMultipleTimes" + const retentionMonths = 123 + + defer func() { + _ = os.RemoveAll(path) + }() + + tb1, err := openTable(path, retentionMonths, nilGetDeletedMetricIDs) + if err != nil { + t.Fatalf("cannot open table the first time: %s", err) + } + defer tb1.MustClose() + + for i := 0; i < 10; i++ { + tb2, err := openTable(path, retentionMonths, nilGetDeletedMetricIDs) + if err == nil { + tb2.MustClose() + t.Fatalf("expecting non-nil error when opening already opened table") + } + } +} diff --git a/lib/storage/table_timing_test.go b/lib/storage/table_timing_test.go new file mode 100644 index 000000000..840b33351 --- /dev/null +++ b/lib/storage/table_timing_test.go @@ -0,0 +1,113 @@ +package storage + +import ( + "fmt" + "math/rand" + "os" + "runtime" + "testing" + "time" +) + +func BenchmarkTableAddRows(b *testing.B) { + for _, tsidsCount := range []int{1e0, 1e1, 1e2, 1e3, 1e4} { + b.Run(fmt.Sprintf("tsidsCount_%d", tsidsCount), func(b *testing.B) { + for _, rowsPerInsert := range []int{1, 1e1, 1e2, 1e3, 1e4, 1e5} { + b.Run(fmt.Sprintf("rowsPerInsert_%d", rowsPerInsert), func(b *testing.B) { + benchmarkTableAddRows(b, rowsPerInsert, tsidsCount) + }) + } + }) + } +} + +func benchmarkTableAddRows(b *testing.B, rowsPerInsert, tsidsCount int) { + rows := make([]rawRow, rowsPerInsert) + startTimestamp := timestampFromTime(time.Now()) + timestamp := startTimestamp + value := float64(100) + for i := 0; i < rowsPerInsert; i++ { + r := &rows[i] + r.PrecisionBits = defaultPrecisionBits + r.TSID.MetricID = uint64(rand.Intn(tsidsCount) + 1) + r.Timestamp = timestamp + r.Value = value + + timestamp += 10 + rand.Int63n(2) + value += float64(int(rand.NormFloat64() * 5)) + } + timestampDelta := timestamp - startTimestamp + + insertsCount := int(1e3) + rowsCountExpected := insertsCount * len(rows) + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(rowsCountExpected)) + tablePath := "./benchmarkTableAddRows" + for i := 0; i < b.N; i++ { + tb, err := openTable(tablePath, -1, nilGetDeletedMetricIDs) + if err != nil { + b.Fatalf("cannot open table %q: %s", tablePath, err) + } + + workCh := make(chan struct{}, insertsCount) + for j := 0; j < insertsCount; j++ { + workCh <- struct{}{} + } + close(workCh) + + doneCh := make(chan struct{}) + gomaxprocs := runtime.GOMAXPROCS(-1) + + for j := 0; j < gomaxprocs; j++ { + go func(goroutineID int) { + // Make per-goroutine rows copy with distinct timestamps. + rowsCopy := append([]rawRow{}, rows...) + for k := range rowsCopy { + r := &rowsCopy[k] + r.Timestamp += int64(goroutineID) + r.Value += float64(goroutineID) + } + + for range workCh { + // Update rowsCopy to the next timestamp chunk. + for q := range rowsCopy { + r := &rowsCopy[q] + r.Timestamp += timestampDelta + r.Value++ + } + // Add updated rowsCopy. + if err := tb.AddRows(rowsCopy); err != nil { + panic(fmt.Errorf("cannot add rows to table %q: %s", tablePath, err)) + } + } + + doneCh <- struct{}{} + }(j) + } + + for j := 0; j < gomaxprocs; j++ { + <-doneCh + } + + tb.MustClose() + + // Open the table from files and verify the rows count on it + tb, err = openTable(tablePath, -1, nilGetDeletedMetricIDs) + if err != nil { + b.Fatalf("cannot open table %q: %s", tablePath, err) + } + var m TableMetrics + tb.UpdateMetrics(&m) + rowsCount := m.BigRowsCount + m.SmallRowsCount + if rowsCount != uint64(rowsCountExpected) { + b.Fatalf("unexpected rows count in the final table %q: got %d; want %d", tablePath, rowsCount, rowsCountExpected) + } + tb.MustClose() + + // Remove the table. + if err := os.RemoveAll(tablePath); err != nil { + b.Fatalf("cannot remove table %q: %s", tablePath, err) + } + } +} diff --git a/lib/storage/tag_filters.go b/lib/storage/tag_filters.go new file mode 100644 index 000000000..66c1c5bd5 --- /dev/null +++ b/lib/storage/tag_filters.go @@ -0,0 +1,685 @@ +package storage + +import ( + "bytes" + "fmt" + "regexp" + "regexp/syntax" + "sort" + "strings" + "sync" + "sync/atomic" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/memory" +) + +// TagFilters represents filters used for filtering tags. +type TagFilters struct { + tfs []tagFilter + + // Common prefix for all the tag filters. + // Contains encoded nsPrefixTagToMetricID. + commonPrefix []byte +} + +// NewTagFilters returns new TagFilters. +func NewTagFilters() *TagFilters { + return &TagFilters{ + commonPrefix: marshalCommonPrefix(nil, nsPrefixTagToMetricID), + } +} + +// Add adds the given tag filter to tfs. +// +// MetricGroup must be encoded with nil key. +func (tfs *TagFilters) Add(key, value []byte, isNegative, isRegexp bool) error { + // Verify whether tag filter is empty. + if len(value) == 0 { + // Substitute an empty tag value with the negative match + // of `.+` regexp in order to filter out all the values with + // the given tag. + isNegative = !isNegative + isRegexp = true + value = []byte(".+") + } + if isRegexp && string(value) == ".*" { + if !isNegative { + // Skip tag filter matching anything, since it equal to no filter. + return nil + } + + // Leave negative tag filter matching anything as is, + // since it must filter out all the time series with the given key. + } + + if cap(tfs.tfs) > len(tfs.tfs) { + tfs.tfs = tfs.tfs[:len(tfs.tfs)+1] + } else { + tfs.tfs = append(tfs.tfs, tagFilter{}) + } + tf := &tfs.tfs[len(tfs.tfs)-1] + err := tf.Init(tfs.commonPrefix, key, value, isNegative, isRegexp) + if err != nil { + return fmt.Errorf("cannot initialize tagFilter: %s", err) + } + return nil +} + +// String returns human-readable value for tfs. +func (tfs *TagFilters) String() string { + var bb bytes.Buffer + for i := range tfs.tfs { + fmt.Fprintf(&bb, ", %s", tfs.tfs[i].String()) + } + return bb.String() +} + +// Reset resets the tf +func (tfs *TagFilters) Reset() { + tfs.tfs = tfs.tfs[:0] + tfs.commonPrefix = marshalCommonPrefix(tfs.commonPrefix[:0], nsPrefixTagToMetricID) +} + +// tagFilter represents a filter used for filtering tags. +type tagFilter struct { + key []byte + value []byte + isNegative bool + isRegexp bool + + // Prefix always contains {nsPrefixTagToMetricID, key}. + // Additionally it contains: + // - value ending with tagSeparatorChar if !isRegexp. + // - non-regexp prefix if isRegexp. + prefix []byte + + // or values obtained from regexp suffix if it equals to "foo|bar|..." + orSuffixes []string + + // Matches regexp suffix. + reSuffixMatch func(b []byte) bool +} + +// String returns human-readable tf value. +func (tf *tagFilter) String() string { + var bb bytes.Buffer + fmt.Fprintf(&bb, "[isNegative=%v, isRegexp=%v, prefix=%q", tf.isNegative, tf.isRegexp, tf.prefix) + fmt.Fprintf(&bb, ", orSuffixes=%v, reSuffixMatch=%p", tf.orSuffixes, tf.reSuffixMatch) + fmt.Fprintf(&bb, "]") + return bb.String() +} + +// Marshal appends marshaled tf to dst +// and returns the result. +func (tf *tagFilter) Marshal(dst []byte) []byte { + dst = marshalTagValue(dst, tf.key) + dst = marshalTagValue(dst, tf.value) + + isNegative := byte(0) + if tf.isNegative { + isNegative = 1 + } + + isRegexp := byte(0) + if tf.isRegexp { + isRegexp = 1 + } + + dst = append(dst, isNegative, isRegexp) + return dst +} + +// Init initializes the tag filter for the given commonPrefix, key and value. +// +// If isNegaitve is true, then the tag filter matches all the values +// except the given one. +// +// If isRegexp is true, then the value is interpreted as anchored regexp, +// i.e. '^(tag.Value)$'. +// +// MetricGroup must be encoded in the value with nil key. +func (tf *tagFilter) Init(commonPrefix, key, value []byte, isNegative, isRegexp bool) error { + tf.key = append(tf.key[:0], key...) + tf.value = append(tf.value[:0], value...) + tf.isNegative = isNegative + tf.isRegexp = isRegexp + + tf.prefix = tf.prefix[:0] + + tf.orSuffixes = tf.orSuffixes[:0] + tf.reSuffixMatch = nil + + tf.prefix = append(tf.prefix, commonPrefix...) + tf.prefix = marshalTagValue(tf.prefix, key) + + var expr []byte + prefix := tf.value + if tf.isRegexp { + prefix, expr = getRegexpPrefix(tf.value) + if len(expr) == 0 { + tf.isRegexp = false + } + } + tf.prefix = marshalTagValue(tf.prefix, prefix) + if tf.isRegexp { + // Remove the trailing tagSeparatorChar from the prefix. + tf.prefix = tf.prefix[:len(tf.prefix)-1] + } + if len(expr) == 0 { + return nil + } + + rcv, err := getRegexpFromCache(expr) + if err != nil { + return err + } + tf.orSuffixes = append(tf.orSuffixes[:0], rcv.orValues...) + tf.reSuffixMatch = rcv.reMatch + return nil +} + +func (tf *tagFilter) matchSuffix(b []byte) (bool, error) { + if !tf.isRegexp { + return len(b) == 0, nil + } + + // Remove the trailing tagSeparatorChar before applying the regexp. + if len(b) == 0 || b[len(b)-1] != tagSeparatorChar { + return false, fmt.Errorf("unexpected end of b; want %d; b=%q", tagSeparatorChar, b) + } + b = b[:len(b)-1] + + ok := tf.reSuffixMatch(b) + return ok, nil +} + +// RegexpCacheSize returns the number of cached regexps for tag filters. +func RegexpCacheSize() int { + regexpCacheLock.RLock() + n := len(regexpCacheMap) + regexpCacheLock.RUnlock() + return n +} + +// RegexpCacheRequests returns the number of requests to regexp cache. +func RegexpCacheRequests() uint64 { + return atomic.LoadUint64(®expCacheRequests) +} + +// RegexpCacheMisses returns the number of cache misses for regexp cache. +func RegexpCacheMisses() uint64 { + return atomic.LoadUint64(®expCacheMisses) +} + +func getRegexpFromCache(expr []byte) (regexpCacheValue, error) { + atomic.AddUint64(®expCacheRequests, 1) + + // Fast path - search the regexp in the cache. + regexpCacheLock.RLock() + rcv, ok := regexpCacheMap[string(expr)] + regexpCacheLock.RUnlock() + + if ok { + return rcv, nil + } + + // Slow path - build the regexp. + atomic.AddUint64(®expCacheMisses, 1) + exprOrig := string(expr) + + expr = []byte(tagCharsRegexpEscaper.Replace(exprOrig)) + exprStr := fmt.Sprintf("^(%s)$", expr) + re, err := regexp.Compile(exprStr) + if err != nil { + return rcv, fmt.Errorf("invalid regexp %q: %s", exprStr, err) + } + + sExpr := string(expr) + orValues := getOrValues(sExpr) + var reMatch func(b []byte) bool + if len(orValues) > 0 { + if len(orValues) == 1 { + v := orValues[0] + reMatch = func(b []byte) bool { + return string(b) == v + } + } else { + reMatch = func(b []byte) bool { + for _, v := range orValues { + if string(b) == v { + return true + } + } + return false + } + } + } else { + reMatch = getReMatchFunc(sExpr) + } + if reMatch == nil { + reMatch = func(b []byte) bool { + return re.Match(b) + } + } + + // Put the reMatch in the cache. + rcv.orValues = orValues + rcv.reMatch = reMatch + + regexpCacheLock.Lock() + if overflow := len(regexpCacheMap) - getMaxRegexpCacheSize(); overflow > 0 { + overflow = int(float64(len(regexpCacheMap)) * 0.1) + for k := range regexpCacheMap { + delete(regexpCacheMap, k) + overflow-- + if overflow <= 0 { + break + } + } + } + regexpCacheMap[exprOrig] = rcv + regexpCacheLock.Unlock() + + return rcv, nil +} + +// getReMatchFunc returns a function for matching the given expr. +// '.*' +// '.+' +// 'literal.*' +// '.*literal.*' +// '.*literal' +func getReMatchFunc(expr string) func(b []byte) bool { + re, err := syntax.Parse(expr, syntax.Perl) + if err != nil { + logger.Panicf("BUG: unexpected error when parsing verified expr=%q: %s", expr, err) + } + if isDotStar(re) { + return func(b []byte) bool { + return true + } + } + if isDotPlus(re) { + return func(b []byte) bool { + return len(b) > 0 + } + } + return getSingleValueFuncExt(re) +} + +func getSingleValueFuncExt(re *syntax.Regexp) func(b []byte) bool { + switch re.Op { + case syntax.OpCapture: + return getSingleValueFuncExt(re.Sub[0]) + case syntax.OpLiteral: + s := string(re.Rune) + return func(b []byte) bool { + return string(b) == s + } + case syntax.OpConcat: + if len(re.Sub) == 2 { + if isDotStar(re.Sub[0]) && isLiteral(re.Sub[1]) { + suffix := []byte(string(re.Sub[1].Rune)) + return func(b []byte) bool { + return bytes.HasSuffix(b, suffix) + } + } + if isLiteral(re.Sub[0]) && isDotStar(re.Sub[1]) { + prefix := []byte(string(re.Sub[0].Rune)) + return func(b []byte) bool { + return bytes.HasPrefix(b, prefix) + } + } + return nil + } + if len(re.Sub) != 3 || !isDotStar(re.Sub[0]) || !isDotStar(re.Sub[2]) || !isLiteral(re.Sub[1]) { + return nil + } + middle := []byte(string(re.Sub[1].Rune)) + return func(b []byte) bool { + return bytes.Contains(b, middle) + } + default: + return nil + } +} + +func isDotStar(re *syntax.Regexp) bool { + switch re.Op { + case syntax.OpCapture: + return isDotStar(re.Sub[0]) + case syntax.OpAlternate: + for _, reSub := range re.Sub { + if isDotStar(reSub) { + return true + } + } + return false + case syntax.OpStar: + switch re.Sub[0].Op { + case syntax.OpAnyCharNotNL, syntax.OpAnyChar: + return true + default: + return false + } + default: + return false + } +} + +func isDotPlus(re *syntax.Regexp) bool { + switch re.Op { + case syntax.OpCapture: + return isDotPlus(re.Sub[0]) + case syntax.OpAlternate: + for _, reSub := range re.Sub { + if isDotPlus(reSub) { + return true + } + } + return false + case syntax.OpPlus: + switch re.Sub[0].Op { + case syntax.OpAnyCharNotNL, syntax.OpAnyChar: + return true + default: + return false + } + default: + return false + } +} + +func isLiteral(re *syntax.Regexp) bool { + if re.Op == syntax.OpCapture { + return isLiteral(re.Sub[0]) + } + return re.Op == syntax.OpLiteral +} + +func getOrValues(expr string) []string { + re, err := syntax.Parse(expr, syntax.Perl) + if err != nil { + logger.Panicf("BUG: unexpected error when parsing verified expr=%q: %s", expr, err) + } + orValues := getOrValuesExt(re) + + // Sort orValues for faster index seek later + sort.Strings(orValues) + + return orValues +} + +func getOrValuesExt(re *syntax.Regexp) []string { + switch re.Op { + case syntax.OpCapture: + return getOrValuesExt(re.Sub[0]) + case syntax.OpLiteral: + return []string{string(re.Rune)} + case syntax.OpEmptyMatch: + return []string{""} + case syntax.OpAlternate: + a := make([]string, 0, len(re.Sub)) + for _, reSub := range re.Sub { + ca := getOrValuesExt(reSub) + if len(ca) == 0 { + return nil + } + a = append(a, ca...) + if len(a) > maxOrValues { + // It is cheaper to use regexp here. + return nil + } + } + return a + case syntax.OpCharClass: + a := make([]string, 0, len(re.Rune)/2) + for i := 0; i < len(re.Rune); i += 2 { + start := re.Rune[i] + end := re.Rune[i+1] + for start <= end { + a = append(a, string(start)) + start++ + if len(a) > maxOrValues { + // It is cheaper to use regexp here. + return nil + } + } + } + return a + case syntax.OpConcat: + if len(re.Sub) < 1 { + return []string{""} + } + prefixes := getOrValuesExt(re.Sub[0]) + if len(prefixes) == 0 { + return nil + } + re.Sub = re.Sub[1:] + suffixes := getOrValuesExt(re) + if len(suffixes) == 0 { + return nil + } + if len(prefixes)*len(suffixes) > maxOrValues { + // It is cheaper to use regexp here. + return nil + } + a := make([]string, 0, len(prefixes)*len(suffixes)) + for _, prefix := range prefixes { + for _, suffix := range suffixes { + s := prefix + suffix + a = append(a, s) + } + } + return a + default: + return nil + } +} + +const maxOrValues = 20 + +var tagCharsRegexpEscaper = strings.NewReplacer( + "\\x00", "(?:\\x000)", // escapeChar + "\x00", "(?:\\x000)", // escapeChar + "\\x01", "(?:\\x001)", // tagSeparatorChar + "\x01", "(?:\\x001)", // tagSeparatorChar + "\\x02", "(?:\\x002)", // kvSeparatorChar + "\x02", "(?:\\x002)", // kvSeparatorChar +) + +func getMaxRegexpCacheSize() int { + maxRegexpCacheSizeOnce.Do(func() { + n := memory.Allowed() / 1024 / 1024 + if n < 100 { + n = 100 + } + maxRegexpCacheSize = n + }) + return maxRegexpCacheSize +} + +var ( + maxRegexpCacheSize int + maxRegexpCacheSizeOnce sync.Once +) + +var ( + regexpCacheMap = make(map[string]regexpCacheValue) + regexpCacheLock sync.RWMutex + + regexpCacheRequests uint64 + regexpCacheMisses uint64 +) + +type regexpCacheValue struct { + orValues []string + reMatch func(b []byte) bool +} + +func getRegexpPrefix(b []byte) ([]byte, []byte) { + // Fast path - search the prefix in the cache. + prefixesCacheLock.RLock() + ps, ok := prefixesCacheMap[string(b)] + prefixesCacheLock.RUnlock() + + if ok { + return ps.prefix, ps.suffix + } + + // Slow path - extract the regexp prefix from b. + prefix, suffix := extractRegexpPrefix(b) + + // Put the prefix and the suffix to the cache. + prefixesCacheLock.Lock() + if overflow := len(prefixesCacheMap) - getMaxPrefixesCacheSize(); overflow > 0 { + overflow = int(float64(len(prefixesCacheMap)) * 0.1) + for k := range prefixesCacheMap { + delete(prefixesCacheMap, k) + overflow-- + if overflow <= 0 { + break + } + } + } + prefixesCacheMap[string(b)] = prefixSuffix{ + prefix: prefix, + suffix: suffix, + } + prefixesCacheLock.Unlock() + + return prefix, suffix +} + +func getMaxPrefixesCacheSize() int { + maxPrefixesCacheSizeOnce.Do(func() { + n := memory.Allowed() / 1024 / 1024 + if n < 100 { + n = 100 + } + maxPrefixesCacheSize = n + }) + return maxPrefixesCacheSize +} + +var ( + maxPrefixesCacheSize int + maxPrefixesCacheSizeOnce sync.Once +) + +var ( + prefixesCacheMap = make(map[string]prefixSuffix) + prefixesCacheLock sync.RWMutex +) + +type prefixSuffix struct { + prefix []byte + suffix []byte +} + +func extractRegexpPrefix(b []byte) ([]byte, []byte) { + re, err := syntax.Parse(string(b), syntax.Perl) + if err != nil { + // Cannot parse the regexp. Return it all as prefix. + return b, nil + } + re = simplifyRegexp(re) + if re == emptyRegexp { + return nil, nil + } + if re.Op == syntax.OpLiteral { + return []byte(string(re.Rune)), nil + } + var prefix []byte + if re.Op == syntax.OpConcat && re.Sub[0].Op == syntax.OpLiteral { + prefix = []byte(string(re.Sub[0].Rune)) + re.Sub = re.Sub[1:] + if len(re.Sub) == 0 { + return nil, nil + } + } + if _, err := syntax.Compile(re); err != nil { + // Cannot compile the regexp. Return it all as prefix. + return b, nil + } + return prefix, []byte(re.String()) +} + +func simplifyRegexp(re *syntax.Regexp) *syntax.Regexp { + s := re.String() + for { + re = simplifyRegexpExt(re, false, false) + re = re.Simplify() + if re.Op == syntax.OpBeginText || re.Op == syntax.OpEndText { + re = emptyRegexp + } + sNew := re.String() + if sNew == s { + return re + } + var err error + re, err = syntax.Parse(sNew, syntax.Perl) + if err != nil { + logger.Panicf("BUG: cannot parse simplified regexp %q: %s", sNew, err) + } + s = sNew + } +} + +func simplifyRegexpExt(re *syntax.Regexp, hasPrefix, hasSuffix bool) *syntax.Regexp { + switch re.Op { + case syntax.OpCapture: + // Substitute all the capture regexps with non-capture regexps. + re.Op = syntax.OpAlternate + re.Sub[0] = simplifyRegexpExt(re.Sub[0], hasPrefix, hasSuffix) + if re.Sub[0] == emptyRegexp { + return emptyRegexp + } + return re + case syntax.OpStar, syntax.OpPlus, syntax.OpQuest, syntax.OpRepeat: + re.Sub[0] = simplifyRegexpExt(re.Sub[0], hasPrefix, hasSuffix) + if re.Sub[0] == emptyRegexp { + return emptyRegexp + } + return re + case syntax.OpAlternate: + // Do not remove empty captures from OpAlternate, since this may break regexp. + for i, sub := range re.Sub { + re.Sub[i] = simplifyRegexpExt(sub, hasPrefix, hasSuffix) + } + return re + case syntax.OpConcat: + subs := re.Sub[:0] + for i, sub := range re.Sub { + if sub = simplifyRegexpExt(sub, i > 0, i+1 < len(re.Sub)); sub != emptyRegexp { + subs = append(subs, sub) + } + } + re.Sub = subs + // Remove anchros from the beginning and the end of regexp, since they + // will be added later. + if !hasPrefix { + for len(re.Sub) > 0 && re.Sub[0].Op == syntax.OpBeginText { + re.Sub = re.Sub[1:] + } + } + if !hasSuffix { + for len(re.Sub) > 0 && re.Sub[len(re.Sub)-1].Op == syntax.OpEndText { + re.Sub = re.Sub[:len(re.Sub)-1] + } + } + if len(re.Sub) == 0 { + return emptyRegexp + } + return re + case syntax.OpEmptyMatch: + return emptyRegexp + default: + return re + } +} + +var emptyRegexp = &syntax.Regexp{ + Op: syntax.OpEmptyMatch, +} diff --git a/lib/storage/tag_filters_test.go b/lib/storage/tag_filters_test.go new file mode 100644 index 000000000..74dc705a3 --- /dev/null +++ b/lib/storage/tag_filters_test.go @@ -0,0 +1,474 @@ +package storage + +import ( + "reflect" + "testing" +) + +func TestGetRegexpFromCache(t *testing.T) { + f := func(s string, orValuesExpected, expectedMatches, expectedMismatches []string) { + t.Helper() + + for i := 0; i < 3; i++ { + rcv, err := getRegexpFromCache([]byte(s)) + if err != nil { + t.Fatalf("unexpected error for s=%q: %s", s, err) + } + if !reflect.DeepEqual(rcv.orValues, orValuesExpected) { + t.Fatalf("unexpected orValues for s=%q; got %q; want %q", s, rcv.orValues, orValuesExpected) + } + for _, expectedMatch := range expectedMatches { + if !rcv.reMatch([]byte(expectedMatch)) { + t.Fatalf("s=%q must match %q", s, expectedMatch) + } + } + for _, expectedMismatch := range expectedMismatches { + if rcv.reMatch([]byte(expectedMismatch)) { + t.Fatalf("s=%q must mismatch %q", s, expectedMismatch) + } + } + } + } + + f("", []string{""}, []string{""}, []string{"foo", "x"}) + f("foo", []string{"foo"}, []string{"foo"}, []string{"", "bar"}) + f("foo.*", nil, []string{"foo", "foobar"}, []string{"xfoo", "xfoobar", "", "a"}) + f(".*foo", nil, []string{"foo", "xfoo"}, []string{"foox", "xfoobar", "", "a"}) + f(".*foo.*", nil, []string{"foo", "xfoo", "foox", "xfoobar"}, []string{"", "bar", "foxx"}) + f("((.*)foo(.*))", nil, []string{"foo", "xfoo", "foox", "xfoobar"}, []string{"", "bar", "foxx"}) + f(".+foo", nil, []string{"afoo", "bbfoo"}, []string{"foo", "foobar", "afoox", ""}) + f("a|b", []string{"a", "b"}, []string{"a", "b"}, []string{"xa", "bx", "xab", ""}) + f("foo.+", nil, []string{"foox", "foobar"}, []string{"foo", "afoox", "afoo", ""}) + f(".*foo.*bar", nil, []string{"foobar", "xfoobar", "xfooxbar", "fooxbar"}, []string{"", "foobarx", "afoobarx", "aaa"}) + f("foo.*bar", nil, []string{"foobar", "fooxbar"}, []string{"xfoobar", "", "foobarx", "aaa"}) + f("foo.*bar.*", nil, []string{"foobar", "fooxbar", "foobarx", "fooxbarx"}, []string{"", "afoobarx", "aaa", "afoobar"}) + + f(".*", nil, []string{"", "a", "foo", "foobar"}, nil) + f("foo|.*", nil, []string{"", "a", "foo", "foobar"}, nil) + f(".+", nil, []string{"a", "foo"}, []string{""}) + f("(.+)*(foo)?", nil, []string{"a", "foo", ""}, nil) +} + +func TestTagFilterMatchSuffix(t *testing.T) { + commonPrefix := []byte("prefix") + key := []byte("key") + var tf tagFilter + + tv := func(s string) string { + return string(marshalTagValue(nil, []byte(s))) + } + init := func(value string, isNegative, isRegexp bool, expectedPrefix string) { + t.Helper() + if err := tf.Init(commonPrefix, key, []byte(value), isNegative, isRegexp); err != nil { + t.Fatalf("unexpected error: %s", err) + } + prefix := string(commonPrefix) + tv(string(key)) + expectedPrefix + if prefix != string(tf.prefix) { + t.Fatalf("unexpected tf.prefix; got %q; want %q", tf.prefix, prefix) + } + } + match := func(suffix string) { + t.Helper() + ok, err := tf.matchSuffix([]byte(suffix)) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok == tf.isNegative { + t.Fatalf("%q must match suffix %q", tf.String(), suffix) + } + } + mismatch := func(suffix string) { + t.Helper() + ok, err := tf.matchSuffix([]byte(suffix)) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + if ok != tf.isNegative { + t.Fatalf("%q mustn't match suffix %q", tf.String(), suffix) + } + } + + t.Run("plain-value", func(t *testing.T) { + value := "xx" + isNegative := false + isRegexp := false + expectedPrefix := tv(value) + init(value, isNegative, isRegexp, expectedPrefix) + + // Plain value must match empty suffix only + match("") + mismatch("foo") + mismatch("xx") + }) + t.Run("negative-plain-value", func(t *testing.T) { + value := "xx" + isNegative := true + isRegexp := false + expectedPrefix := tv(value) + init(value, isNegative, isRegexp, expectedPrefix) + + // Negaitve plain value must match all except empty suffix + mismatch("") + match("foo") + match("foxx") + match("xx") + match("xxx") + match("xxfoo") + }) + t.Run("regexp-convert-to-plain-value", func(t *testing.T) { + value := "http" + isNegative := false + isRegexp := true + expectedPrefix := tv("http") + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match only empty suffix + match("") + mismatch("x") + mismatch("http") + mismatch("foobar") + }) + t.Run("negative-regexp-convert-to-plain-value", func(t *testing.T) { + value := "http" + isNegative := true + isRegexp := true + expectedPrefix := tv("http") + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match all except empty suffix + mismatch("") + match("x") + match("xhttp") + match("http") + match("httpx") + match("foobar") + }) + t.Run("regexp-prefix-any-suffix", func(t *testing.T) { + value := "http.*" + isNegative := false + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match any suffix + match(tv("")) + match(tv("x")) + match(tv("http")) + match(tv("foobar")) + }) + t.Run("negative-regexp-prefix-any-suffix", func(t *testing.T) { + value := "http.*" + isNegative := true + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + + // Mustn't match any suffix + mismatch(tv("")) + mismatch(tv("x")) + mismatch(tv("xhttp")) + mismatch(tv("http")) + mismatch(tv("httpsdf")) + mismatch(tv("foobar")) + }) + t.Run("regexp-prefix-contains-suffix", func(t *testing.T) { + value := "http.*foo.*" + isNegative := false + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match any suffix with `foo` + mismatch(tv("")) + mismatch(tv("x")) + mismatch(tv("http")) + match(tv("foo")) + match(tv("foobar")) + match(tv("xfoobar")) + match(tv("xfoo")) + }) + t.Run("negative-regexp-prefix-contains-suffix", func(t *testing.T) { + value := "http.*foo.*" + isNegative := true + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match any suffix without `foo` + match(tv("")) + match(tv("x")) + match(tv("http")) + mismatch(tv("foo")) + mismatch(tv("foobar")) + mismatch(tv("xfoobar")) + mismatch(tv("xfoo")) + mismatch(tv("httpfoo")) + mismatch(tv("httpfoobar")) + mismatch(tv("httpxfoobar")) + mismatch(tv("httpxfoo")) + }) + t.Run("negative-regexp-noprefix-contains-suffix", func(t *testing.T) { + value := ".*foo.*" + isNegative := true + isRegexp := true + expectedPrefix := "" + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match anything not matching `.*foo.*` + match(tv("")) + match(tv("x")) + match(tv("http")) + mismatch(tv("foo")) + mismatch(tv("foobar")) + mismatch(tv("xfoobar")) + mismatch(tv("xfoo")) + }) + t.Run("regexp-prefix-special-suffix", func(t *testing.T) { + value := "http.*bar" + isNegative := false + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match suffix ending on bar + mismatch(tv("")) + mismatch(tv("x")) + match(tv("bar")) + mismatch(tv("barx")) + match(tv("foobar")) + mismatch(tv("foobarx")) + }) + t.Run("negative-regexp-prefix-special-suffix", func(t *testing.T) { + value := "http.*bar" + isNegative := true + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + + // Mustn't match suffix ending on bar + match(tv("")) + mismatch(tv("bar")) + mismatch(tv("xhttpbar")) + mismatch(tv("httpbar")) + match(tv("httpbarx")) + mismatch(tv("httpxybar")) + match(tv("httpxybarx")) + mismatch(tv("ahttpxybar")) + }) + t.Run("negative-regexp-noprefix-special-suffix", func(t *testing.T) { + value := ".*bar" + isNegative := true + isRegexp := true + expectedPrefix := "" + init(value, isNegative, isRegexp, expectedPrefix) + + // Must match all except the regexp from value + match(tv("")) + mismatch(tv("bar")) + mismatch(tv("xhttpbar")) + match(tv("barx")) + match(tv("pbarx")) + }) + t.Run("regexp-or-suffixes", func(t *testing.T) { + value := "http(foo|bar)" + isNegative := false + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + if !reflect.DeepEqual(tf.orSuffixes, []string{"bar", "foo"}) { + t.Fatalf("unexpected orSuffixes; got %q; want %q", tf.orSuffixes, []string{"bar", "foo"}) + } + + // Must match foo or bar suffix + mismatch(tv("")) + mismatch(tv("x")) + match(tv("bar")) + mismatch(tv("barx")) + match(tv("foo")) + mismatch(tv("foobar")) + }) + t.Run("negative-regexp-or-suffixes", func(t *testing.T) { + value := "http(foo|bar)" + isNegative := true + isRegexp := true + expectedPrefix := "http" + init(value, isNegative, isRegexp, expectedPrefix) + if !reflect.DeepEqual(tf.orSuffixes, []string{"bar", "foo"}) { + t.Fatalf("unexpected or suffixes; got %q; want %q", tf.orSuffixes, []string{"bar", "foo"}) + } + + // Mustn't match foo or bar suffix + match(tv("")) + match(tv("x")) + mismatch(tv("foo")) + match(tv("fooa")) + match(tv("xfooa")) + mismatch(tv("bar")) + match(tv("xhttpbar")) + }) +} + +func TestGetOrValues(t *testing.T) { + f := func(s string, valuesExpected []string) { + t.Helper() + + values := getOrValues(s) + if !reflect.DeepEqual(values, valuesExpected) { + t.Fatalf("unexpected values for s=%q; got %q; want %q", s, values, valuesExpected) + } + } + + f("", []string{""}) + f("foo.+", nil) + f("foo.*", nil) + f(".*", nil) + f("foo|.*", nil) + f("foobar", []string{"foobar"}) + f("z|x|c", []string{"c", "x", "z"}) + f("foo|bar", []string{"bar", "foo"}) + f("(foo|bar)", []string{"bar", "foo"}) + f("(foo|bar)baz", []string{"barbaz", "foobaz"}) + f("[a-z]", nil) + f("[a-d]", []string{"a", "b", "c", "d"}) + f("x[a-d]we", []string{"xawe", "xbwe", "xcwe", "xdwe"}) + f("foo(bar|baz)", []string{"foobar", "foobaz"}) + f("foo(ba[rz]|(xx|o))", []string{"foobar", "foobaz", "fooo", "fooxx"}) + f("foo(?:bar|baz)x(qwe|rt)", []string{"foobarxqwe", "foobarxrt", "foobazxqwe", "foobazxrt"}) + f("foo(bar||baz)", []string{"foo", "foobar", "foobaz"}) + f("(a|b|c)(d|e|f)(g|h|k)", nil) +} + +func TestGetRegexpPrefix(t *testing.T) { + testGetRegexpPrefix(t, "", "", "") + testGetRegexpPrefix(t, "^", "", "") + testGetRegexpPrefix(t, "$", "", "") + testGetRegexpPrefix(t, "^()$", "", "") + testGetRegexpPrefix(t, "^(?:)$", "", "") + testGetRegexpPrefix(t, "foobar", "foobar", "") + testGetRegexpPrefix(t, "foo$|^foobar", "foo", "(?:(?:)|bar)") + testGetRegexpPrefix(t, "^(foo$|^foobar)$", "foo", "(?:(?:)|bar)") + testGetRegexpPrefix(t, "foobar|foobaz", "fooba", "[rz]") + testGetRegexpPrefix(t, "(fo|(zar|bazz)|x)", "", "fo|zar|bazz|x") + testGetRegexpPrefix(t, "(тестЧЧ|тест)", "тест", "(?:ЧЧ|(?:))") + testGetRegexpPrefix(t, "foo(bar|baz|bana)", "fooba", "(?:[rz]|na)") + testGetRegexpPrefix(t, "^foobar|foobaz", "fooba", "[rz]") + testGetRegexpPrefix(t, "^foobar|^foobaz$", "fooba", "[rz]") + testGetRegexpPrefix(t, "foobar|foobaz", "fooba", "[rz]") + testGetRegexpPrefix(t, "(?:^foobar|^foobaz)aa.*", "fooba", "[rz]aa(?-s:.)*") + testGetRegexpPrefix(t, "foo[bar]+", "foo", "[a-br]+") + testGetRegexpPrefix(t, "foo[a-z]+", "foo", "[a-z]+") + testGetRegexpPrefix(t, "foo[bar]*", "foo", "[a-br]*") + testGetRegexpPrefix(t, "foo[a-z]*", "foo", "[a-z]*") + testGetRegexpPrefix(t, "foo[x]+", "foo", "x+") + testGetRegexpPrefix(t, "foo[^x]+", "foo", "[^x]+") + testGetRegexpPrefix(t, "foo[x]*", "foo", "x*") + testGetRegexpPrefix(t, "foo[^x]*", "foo", "[^x]*") + testGetRegexpPrefix(t, "foo[x]*bar", "foo", "x*bar") + testGetRegexpPrefix(t, "fo\\Bo[x]*bar?", "fo", "\\Box*bar?") + + // test invalid regexps + testGetRegexpPrefix(t, "a(", "a(", "") + testGetRegexpPrefix(t, "a[", "a[", "") + testGetRegexpPrefix(t, "a[]", "a[]", "") + testGetRegexpPrefix(t, "a{", "a{", "") + testGetRegexpPrefix(t, "a{}", "a{}", "") + testGetRegexpPrefix(t, "invalid(regexp", "invalid(regexp", "") + + // The transformed regexp mustn't match aba + testGetRegexpPrefix(t, "a?(^ba|c)", "", "a?(?:\\Aba|c)") + + // The transformed regexp mustn't match barx + testGetRegexpPrefix(t, "(foo|bar$)x*", "", "(?:foo|bar(?-m:$))x*") +} + +func testGetRegexpPrefix(t *testing.T, s, expectedPrefix, expectedSuffix string) { + t.Helper() + + prefix, suffix := getRegexpPrefix([]byte(s)) + if string(prefix) != expectedPrefix { + t.Fatalf("unexpected prefix for s=%q; got %q; want %q", s, prefix, expectedPrefix) + } + if string(suffix) != expectedSuffix { + t.Fatalf("unexpected suffix for s=%q; got %q; want %q", s, suffix, expectedSuffix) + } + + // Get the prefix from cache. + prefix, suffix = getRegexpPrefix([]byte(s)) + if string(prefix) != expectedPrefix { + t.Fatalf("unexpected prefix for s=%q; got %q; want %q", s, prefix, expectedPrefix) + } + if string(suffix) != expectedSuffix { + t.Fatalf("unexpected suffix for s=%q; got %q; want %q", s, suffix, expectedSuffix) + } +} + +func TestTagFiltersAddEmpty(t *testing.T) { + tfs := NewTagFilters() + + mustAdd := func(key, value []byte, isNegative, isRegexp bool) { + t.Helper() + if err := tfs.Add(key, value, isNegative, isRegexp); err != nil { + t.Fatalf("unexpected error: %s", err) + } + } + expectTagFilter := func(idx int, value string, isNegative, isRegexp bool) { + t.Helper() + if len(tfs.tfs) != idx+1 { + t.Fatalf("expecting non-empty tag filter") + } + tf := tfs.tfs[idx] + if string(tf.value) != value { + t.Fatalf("unexpected tag filter value; got %q; want %q", tf.value, value) + } + if tf.isNegative != isNegative { + t.Fatalf("unexpected isNegative; got %v; want %v", tf.isNegative, isNegative) + } + if tf.isRegexp != isRegexp { + t.Fatalf("unexpected isRegexp; got %v; want %v", tf.isRegexp, isRegexp) + } + } + + // Empty filters + mustAdd(nil, nil, false, false) + expectTagFilter(0, ".+", true, true) + mustAdd([]byte("foo"), nil, false, false) + expectTagFilter(1, ".+", true, true) + mustAdd([]byte("foo"), nil, true, false) + expectTagFilter(2, ".+", false, true) + + // Empty regexp filters + tfs.Reset() + mustAdd([]byte("foo"), []byte(".*"), false, true) + if len(tfs.tfs) != 0 { + t.Fatalf("unexpectedly added empty regexp filter %s", &tfs.tfs[0]) + } + mustAdd([]byte("foo"), []byte(".*"), true, true) + expectTagFilter(0, ".*", true, true) + mustAdd([]byte("foo"), []byte("foo||bar"), false, true) + expectTagFilter(1, "foo||bar", false, true) + mustAdd(nil, []byte("foo||bar"), true, true) + expectTagFilter(2, "foo||bar", true, true) + + // Verify that otner filters are added normally. + tfs.Reset() + mustAdd(nil, []byte("foobar"), false, false) + if len(tfs.tfs) != 1 { + t.Fatalf("missing added filter") + } + mustAdd([]byte("bar"), []byte("foobar"), true, false) + if len(tfs.tfs) != 2 { + t.Fatalf("missing added filter") + } + mustAdd(nil, []byte("foo.+bar"), true, true) + if len(tfs.tfs) != 3 { + t.Fatalf("missing added filter") + } + mustAdd([]byte("bar"), []byte("foo.+bar"), false, true) + if len(tfs.tfs) != 4 { + t.Fatalf("missing added filter") + } + mustAdd([]byte("bar"), []byte("foo.*"), false, true) + if len(tfs.tfs) != 5 { + t.Fatalf("missing added filter") + } +} diff --git a/lib/storage/tag_filters_timing_test.go b/lib/storage/tag_filters_timing_test.go new file mode 100644 index 000000000..52f776b89 --- /dev/null +++ b/lib/storage/tag_filters_timing_test.go @@ -0,0 +1,125 @@ +package storage + +import ( + "testing" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/logger" +) + +func BenchmarkTagFilterMatchSuffix(b *testing.B) { + b.Run("regexp-any-suffix", func(b *testing.B) { + key := []byte("foo.*") + isNegative := false + isRegexp := true + suffix := marshalTagValue(nil, []byte("ojksdfds")) + b.ReportAllocs() + b.SetBytes(int64(1)) + b.RunParallel(func(pb *testing.PB) { + var tf tagFilter + if err := tf.Init(nil, nil, key, isNegative, isRegexp); err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + for pb.Next() { + ok, err := tf.matchSuffix(suffix) + if err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + if !ok { + logger.Panicf("BUG: unexpected suffix mismatch") + } + } + }) + }) + b.Run("regexp-any-nonzero-suffix", func(b *testing.B) { + key := []byte("foo.+") + isNegative := false + isRegexp := true + suffix := marshalTagValue(nil, []byte("ojksdfds")) + b.ReportAllocs() + b.SetBytes(int64(1)) + b.RunParallel(func(pb *testing.PB) { + var tf tagFilter + if err := tf.Init(nil, nil, key, isNegative, isRegexp); err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + for pb.Next() { + ok, err := tf.matchSuffix(suffix) + if err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + if !ok { + logger.Panicf("BUG: unexpected suffix mismatch") + } + } + }) + }) + b.Run("regexp-special-suffix", func(b *testing.B) { + key := []byte("foo.*ss?") + isNegative := false + isRegexp := true + suffix := marshalTagValue(nil, []byte("ojksdfds")) + b.ReportAllocs() + b.SetBytes(int64(1)) + b.RunParallel(func(pb *testing.PB) { + var tf tagFilter + if err := tf.Init(nil, nil, key, isNegative, isRegexp); err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + for pb.Next() { + ok, err := tf.matchSuffix(suffix) + if err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + if !ok { + logger.Panicf("BUG: unexpected suffix mismatch") + } + } + }) + }) + b.Run("regexp-or-values", func(b *testing.B) { + key := []byte("foo|bar|baz") + isNegative := false + isRegexp := true + suffix := marshalTagValue(nil, []byte("ojksdfds")) + b.ReportAllocs() + b.SetBytes(int64(1)) + b.RunParallel(func(pb *testing.PB) { + var tf tagFilter + if err := tf.Init(nil, nil, key, isNegative, isRegexp); err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + for pb.Next() { + ok, err := tf.matchSuffix(suffix) + if err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + if ok { + logger.Panicf("BUG: unexpected suffix match") + } + } + }) + }) + b.Run("regexp-contains", func(b *testing.B) { + key := []byte(".*foo.*") + isNegative := false + isRegexp := true + suffix := marshalTagValue(nil, []byte("ojksdfds")) + b.ReportAllocs() + b.SetBytes(int64(1)) + b.RunParallel(func(pb *testing.PB) { + var tf tagFilter + if err := tf.Init(nil, nil, key, isNegative, isRegexp); err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + for pb.Next() { + ok, err := tf.matchSuffix(suffix) + if err != nil { + logger.Panicf("BUG: unexpected error: %s", err) + } + if ok { + logger.Panicf("BUG: unexpected suffix match") + } + } + }) + }) +} diff --git a/lib/storage/time.go b/lib/storage/time.go new file mode 100644 index 000000000..7593b1959 --- /dev/null +++ b/lib/storage/time.go @@ -0,0 +1,69 @@ +package storage + +import ( + "fmt" + "time" +) + +// timestampToTime returns time representation of the given timestamp. +// +// The returned time is in UTC timezone. +func timestampToTime(timestamp int64) time.Time { + return time.Unix(timestamp/1e3, (timestamp%1e3)*1e6).UTC() +} + +// timestampFromTime returns timestamp value for the given time. +func timestampFromTime(t time.Time) int64 { + // There is no need in converting t to UTC, since UnixNano must + // return the same value for any timezone. + return t.UnixNano() / 1e6 +} + +// TimeRange is time range. +type TimeRange struct { + MinTimestamp int64 + MaxTimestamp int64 +} + +func (tr *TimeRange) String() string { + minTime := timestampToTime(tr.MinTimestamp) + maxTime := timestampToTime(tr.MaxTimestamp) + return fmt.Sprintf("[%s - %s]", minTime, maxTime) +} + +func (tr *TimeRange) isZero() bool { + return tr.MinTimestamp == 0 && tr.MaxTimestamp == 0 +} + +// timestampToPartitionName returns partition name for the given timestamp. +func timestampToPartitionName(timestamp int64) string { + t := timestampToTime(timestamp) + return t.Format("2006_01") +} + +// fromPartitionName initializes tr from the given parition name. +func (tr *TimeRange) fromPartitionName(name string) error { + t, err := time.Parse("2006_01", name) + if err != nil { + return fmt.Errorf("cannot parse partition name %q: %s", name, err) + } + tr.fromPartitionTime(t) + return nil +} + +// fromPartitionTimestamp initializes tr from the given partition timestamp. +func (tr *TimeRange) fromPartitionTimestamp(timestamp int64) { + t := timestampToTime(timestamp) + tr.fromPartitionTime(t) +} + +// fromPartitionTime initializes tr from the given partition time t. +func (tr *TimeRange) fromPartitionTime(t time.Time) { + y, m, _ := t.UTC().Date() + minTime := time.Date(y, m, 1, 0, 0, 0, 0, time.UTC) + maxTime := time.Date(y, m+1, 1, 0, 0, 0, 0, time.UTC) + tr.MinTimestamp = minTime.Unix() * 1e3 + tr.MaxTimestamp = maxTime.Unix()*1e3 - 1 +} + +const msecPerDay = 24 * 3600 * 1000 diff --git a/lib/storage/time_test.go b/lib/storage/time_test.go new file mode 100644 index 000000000..27dcfaf5f --- /dev/null +++ b/lib/storage/time_test.go @@ -0,0 +1,54 @@ +package storage + +import ( + "testing" + "time" +) + +func TestTimeRangeFromPartition(t *testing.T) { + for i := 0; i < 24*30*365; i++ { + testTimeRangeFromPartition(t, time.Now().Add(time.Hour*time.Duration(i))) + } +} + +func testTimeRangeFromPartition(t *testing.T, initialTime time.Time) { + t.Helper() + + y, m, _ := initialTime.UTC().Date() + var tr TimeRange + tr.fromPartitionTime(initialTime) + + minTime := timestampToTime(tr.MinTimestamp) + minY, minM, _ := minTime.Date() + if minY != y { + t.Fatalf("unexpected year for MinTimestamp; got %d; want %d", minY, y) + } + if minM != m { + t.Fatalf("unexpected month for MinTimestamp; got %d; want %d", minM, m) + } + + // Verify that the previous millisecond form tr.MinTimestamp belongs to the previous month. + tr.MinTimestamp-- + prevTime := timestampToTime(tr.MinTimestamp) + prevY, prevM, _ := prevTime.Date() + if prevY*12+int(prevM-1)+1 != minY*12+int(minM-1) { + t.Fatalf("unexpected prevY, prevM; got %d, %d; want %d, %d+1;\nprevTime=%s\nminTime=%s", prevY, prevM, minY, minM, prevTime, minTime) + } + + maxTime := timestampToTime(tr.MaxTimestamp) + maxY, maxM, _ := maxTime.Date() + if maxY != y { + t.Fatalf("unexpected year for MaxTimestamp; got %d; want %d", maxY, y) + } + if maxM != m { + t.Fatalf("unexpected month for MaxTimestamp; got %d; want %d", maxM, m) + } + + // Verify that the next millisecond from tr.MaxTimestamp belongs to the next month. + tr.MaxTimestamp++ + nextTime := timestampToTime(tr.MaxTimestamp) + nextY, nextM, _ := nextTime.Date() + if nextY*12+int(nextM-1)-1 != maxY*12+int(maxM-1) { + t.Fatalf("unexpected nextY, nextM; got %d, %d; want %d, %d+1;\nnextTime=%s\nmaxTime=%s", nextY, nextM, maxY, maxM, nextTime, maxTime) + } +} diff --git a/lib/storage/tsid.go b/lib/storage/tsid.go new file mode 100644 index 000000000..210787a3b --- /dev/null +++ b/lib/storage/tsid.go @@ -0,0 +1,121 @@ +package storage + +import ( + "fmt" + + "github.com/VictoriaMetrics/VictoriaMetrics/lib/encoding" +) + +// TSID is unique id for a time series. +// +// Time series blocks are sorted by TSID. +// +// All the fields except MetricID are optional. They exist solely for better +// grouping of related metrics. +// It is OK if their meaning differ from their naming. +type TSID struct { + // MetricGroupID is the id of metric group inside the given project. + // + // MetricGroupID must be unique. + // + // Metric group contains metrics with the identical name like + // 'memory_usage', 'http_requests', but with different + // labels. For instance, the following metrics belong + // to a metric group 'memory_usage': + // + // memory_usage{datacenter="foo1", job="bar1", instance="baz1:1234"} + // memory_usage{datacenter="foo1", job="bar1", instance="baz2:1234"} + // memory_usage{datacenter="foo1", job="bar2", instance="baz1:1234"} + // memory_usage{datacenter="foo2", job="bar1", instance="baz2:1234"} + MetricGroupID uint64 + + // JobID is the id of an individual job (aka service) + // for the given project. + // + // JobID must be unique. + // + // Service may consist of multiple instances. + // See https://prometheus.io/docs/concepts/jobs_instances/ for details. + JobID uint32 + + // InstanceID is the id of an instance (aka process) + // for the given project. + // + // InstanceID must be unique. + // + // See https://prometheus.io/docs/concepts/jobs_instances/ for details. + InstanceID uint32 + + // MetricID is the unique id of the metric (time series). + // + // All the other TSID fields may be obtained by MetricID. + MetricID uint64 +} + +// marshaledTSIDSize is the size of marshaled TSID. +var marshaledTSIDSize = func() int { + var t TSID + dst := t.Marshal(nil) + return len(dst) +}() + +// Marshal appends marshaled t to dst and returns the result. +func (t *TSID) Marshal(dst []byte) []byte { + dst = encoding.MarshalUint64(dst, t.MetricGroupID) + dst = encoding.MarshalUint32(dst, t.JobID) + dst = encoding.MarshalUint32(dst, t.InstanceID) + dst = encoding.MarshalUint64(dst, t.MetricID) + return dst +} + +// Unmarshal unmarshals t from src and returns the rest of src. +func (t *TSID) Unmarshal(src []byte) ([]byte, error) { + if len(src) < marshaledTSIDSize { + return nil, fmt.Errorf("too short src; got %d bytes; want %d bytes", len(src), marshaledTSIDSize) + } + + t.MetricGroupID = encoding.UnmarshalUint64(src) + src = src[8:] + t.JobID = encoding.UnmarshalUint32(src) + src = src[4:] + t.InstanceID = encoding.UnmarshalUint32(src) + src = src[4:] + t.MetricID = encoding.UnmarshalUint64(src) + src = src[8:] + + return src, nil +} + +// Less return true if t < b. +func (t *TSID) Less(b *TSID) bool { + if t.MetricID == b.MetricID { + // Fast path - two TSID values are identical. + return false + } + + if t.MetricGroupID < b.MetricGroupID { + return true + } + if t.MetricGroupID > b.MetricGroupID { + return false + } + if t.JobID < b.JobID { + return true + } + if t.JobID > b.JobID { + return false + } + if t.InstanceID < b.InstanceID { + return true + } + if t.InstanceID > b.InstanceID { + return false + } + if t.MetricID < b.MetricID { + return true + } + if t.MetricID > b.MetricID { + return false + } + return false +} diff --git a/lib/storage/tsid_test.go b/lib/storage/tsid_test.go new file mode 100644 index 000000000..7ceb6e2b1 --- /dev/null +++ b/lib/storage/tsid_test.go @@ -0,0 +1,152 @@ +package storage + +import ( + "fmt" + "math/rand" + "reflect" + "sync" + "testing" + "testing/quick" +) + +func TestMarshaledTSIDSize(t *testing.T) { + // This test makes sure marshaled format isn't changed. + // If this test breaks then the storage format has been changed, + // so it may become incompatible with the previously written data. + expectedSize := 24 + if marshaledTSIDSize != expectedSize { + t.Fatalf("unexpected marshaledTSIDSize; got %d; want %d", marshaledTSIDSize, expectedSize) + } +} + +func TestTSIDLess(t *testing.T) { + var t1, t2 TSID + if t1.Less(&t2) { + t.Fatalf("t1=%v cannot be less than t2=%v", &t1, &t2) + } + if t2.Less(&t1) { + t.Fatalf("t2=%v cannot be less than t1=%v", &t2, &t1) + } + + t1.MetricID = 124 + t2.MetricID = 126 + t1.MetricGroupID = 847 + if t1.Less(&t2) { + t.Fatalf("t1=%v cannot be less than t2=%v", &t1, &t2) + } + if !t2.Less(&t1) { + t.Fatalf("t2=%v must be less than t1=%v", &t2, &t1) + } + + t2 = t1 + t2.MetricID = 123 + t1.JobID = 84 + if t1.Less(&t2) { + t.Fatalf("t1=%v cannot be less than t2=%v", &t1, &t2) + } + if !t2.Less(&t1) { + t.Fatalf("t2=%v must be less than t1=%v", &t2, &t1) + } + + t2 = t1 + t2.MetricID = 123 + t1.InstanceID = 8478 + if t1.Less(&t2) { + t.Fatalf("t1=%v cannot be less than t2=%v", &t1, &t2) + } + if !t2.Less(&t1) { + t.Fatalf("t2=%v must be less than t1=%v", &t2, &t1) + } + + t2 = t1 + t1.MetricID = 123847 + if t1.Less(&t2) { + t.Fatalf("t1=%v cannot be less than t2=%v", &t1, &t2) + } + if !t2.Less(&t1) { + t.Fatalf("t2=%v must be less than t1=%v", &t2, &t1) + } + + t2 = t1 + if t1.Less(&t2) { + t.Fatalf("t1=%v cannot be less than t2=%v", &t1, &t2) + } + if t2.Less(&t1) { + t.Fatalf("t2=%v cannot be less than t1=%v", &t2, &t1) + } +} + +func TestTSIDMarshalUnmarshal(t *testing.T) { + var tsid TSID + testTSIDMarshalUnmarshal(t, &tsid) + + for i := 0; i < 1000; i++ { + initTestTSID(&tsid) + + testTSIDMarshalUnmarshal(t, &tsid) + } +} + +func initTestTSID(tsid *TSID) { + rndLock.Lock() + iv, ok := quick.Value(tsidType, rnd) + rndLock.Unlock() + if !ok { + panic(fmt.Errorf("error in quick.Value when generating random TSID")) + } + rndTSID := iv.Interface().(*TSID) + if rndTSID == nil { + rndTSID = &TSID{} + } + *tsid = *rndTSID +} + +var tsidType = reflect.TypeOf(&TSID{}) + +var ( + rnd = rand.New(rand.NewSource(1)) + rndLock sync.Mutex +) + +func testTSIDMarshalUnmarshal(t *testing.T, tsid *TSID) { + t.Helper() + + dst := tsid.Marshal(nil) + if len(dst) != marshaledTSIDSize { + t.Fatalf("unexpected marshaled TSID size; got %d; want %d", len(dst), marshaledTSIDSize) + } + var tsid1 TSID + tail, err := tsid1.Unmarshal(dst) + if err != nil { + t.Fatalf("cannot unmarshal tsid from dst=%x: %s", dst, err) + } + if len(tail) > 0 { + t.Fatalf("non-zero tail left after unmarshaling tsid from dst=%x; %x", dst, tail) + } + if *tsid != tsid1 { + t.Fatalf("unexpected tsid unmarshaled; got\n%+v; want\n%+v", &tsid1, tsid) + } + + prefix := []byte("foo") + dstNew := tsid.Marshal(prefix) + if string(dstNew[:len(prefix)]) != string(prefix) { + t.Fatalf("unexpected prefix: got\n%x; want\n%x", dstNew[:len(prefix)], prefix) + } + if string(dstNew[len(prefix):]) != string(dst) { + t.Fatalf("unexpected prefixed dstNew; got\n%x; want\n%x", dstNew[len(prefix):], dst) + } + + suffix := []byte("bar") + dst = append(dst, suffix...) + var tsid2 TSID + tail, err = tsid2.Unmarshal(dst) + if err != nil { + t.Fatalf("cannot unmarshal tsid from suffixed dst=%x: %s", dst, err) + } + if string(tail) != string(suffix) { + t.Fatalf("invalid suffix; got\n%x; want\n%x", tail, suffix) + } + if *tsid != tsid2 { + t.Fatalf("unexpected tsid unmarshaled from suffixed dst; got\n%+v; want\n%+v", &tsid2, tsid) + } +} diff --git a/lib/syncwg/syncwg.go b/lib/syncwg/syncwg.go new file mode 100644 index 000000000..7ed1da94d --- /dev/null +++ b/lib/syncwg/syncwg.go @@ -0,0 +1,49 @@ +package syncwg + +import ( + "sync" +) + +// WaitGroup wraps sync.WaitGroup and makes safe to call Add/Wait +// from concurrent goroutines. +// +// An additional limitation is that call to Wait prohibits further calls to Add +// until return. +type WaitGroup struct { + sync.WaitGroup + mu sync.Mutex +} + +// Add registers n additional workers. Add may be called from concurrent goroutines. +func (wg *WaitGroup) Add(n int) { + wg.mu.Lock() + wg.WaitGroup.Add(n) + wg.mu.Unlock() +} + +// Wait waits until all the goroutines call Done. +// +// Wait may be called from concurrent goroutines. +// +// Further calls to Add are blocked until return from Wait. +func (wg *WaitGroup) Wait() { + wg.mu.Lock() + wg.WaitGroup.Wait() + wg.mu.Unlock() +} + +// WaitAndBlock waits until all the goroutines call Done and then prevents +// from new goroutines calling Add. +// +// Further calls to Add are always blocked. This is useful for graceful shutdown +// when other goroutines calling Add must be stopped. +// +// wg cannot be used after this call. +func (wg *WaitGroup) WaitAndBlock() { + wg.mu.Lock() + wg.WaitGroup.Wait() + + // Do not unlock wg.mu, so other goroutines calling Add are blocked. +} + +// There is no need in wrapping WaitGroup.Done, since it is already goroutine-safe. diff --git a/vendor/github.com/VictoriaMetrics/fastcache/.travis.yml b/vendor/github.com/VictoriaMetrics/fastcache/.travis.yml new file mode 100644 index 000000000..e103b76c8 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/.travis.yml @@ -0,0 +1,20 @@ +language: go + +go: + - 1.11.x + +script: + # build test for supported platforms + - GOOS=linux go build + - GOOS=darwin go build + - GOOS=freebsd go build + - GOOS=windows go build + - GOARCH=386 go build + + # run tests on a standard platform + - go test -v ./... -coverprofile=coverage.txt -covermode=atomic + - go test -v ./... -race + +after_success: + # Upload coverage results to codecov.io + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/VictoriaMetrics/fastcache/LICENSE b/vendor/github.com/VictoriaMetrics/fastcache/LICENSE new file mode 100644 index 000000000..9a8145e58 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2018 VictoriaMetrics + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/VictoriaMetrics/fastcache/README.md b/vendor/github.com/VictoriaMetrics/fastcache/README.md new file mode 100644 index 000000000..ac6fbaf7f --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/README.md @@ -0,0 +1,116 @@ +[![Build Status](https://travis-ci.org/VictoriaMetrics/fastcache.svg)](https://travis-ci.org/VictoriaMetrics/fastcache) +[![GoDoc](https://godoc.org/github.com/VictoriaMetrics/fastcache?status.svg)](http://godoc.org/github.com/VictoriaMetrics/fastcache) +[![Go Report](https://goreportcard.com/badge/github.com/VictoriaMetrics/fastcache)](https://goreportcard.com/report/github.com/VictoriaMetrics/fastcache) +[![codecov](https://codecov.io/gh/VictoriaMetrics/fastcache/branch/master/graph/badge.svg)](https://codecov.io/gh/VictoriaMetrics/fastcache) + +# fastcache - fast thread-safe inmemory cache for big number of entries in Go + +### Features + +* Fast. Performance scales on multi-core CPUs. See benchmark results below. +* Thread-safe. Concurrent goroutines may read and write into a single + cache instance. +* The fastcache is designed for storing big number of entries without + [GC overhead](https://syslog.ravelin.com/further-dangers-of-large-heaps-in-go-7a267b57d487). +* Fastcache automatically evicts old entries when reaching the maximum cache size + set on its creation. +* [Simple API](http://godoc.org/github.com/VictoriaMetrics/fastcache). +* Simple source code. +* Cache may be [saved to file](https://godoc.org/github.com/VictoriaMetrics/fastcache#Cache.SaveToFile) + and [loaded from file](https://godoc.org/github.com/VictoriaMetrics/fastcache#LoadFromFile). +* Works on [Google AppEngine](https://cloud.google.com/appengine/docs/go/). + + +### Benchmarks + +`Fastcache` performance is compared with [BigCache](https://github.com/allegro/bigcache), standard Go map +and [sync.Map](https://golang.org/pkg/sync/#Map). + +``` +GOMAXPROCS=4 go test github.com/VictoriaMetrics/fastcache -bench='Set|Get' -benchtime=10s +goos: linux +goarch: amd64 +pkg: github.com/VictoriaMetrics/fastcache +BenchmarkBigCacheSet-4 2000 10566656 ns/op 6.20 MB/s 4660369 B/op 6 allocs/op +BenchmarkBigCacheGet-4 2000 6902694 ns/op 9.49 MB/s 684169 B/op 131076 allocs/op +BenchmarkBigCacheSetGet-4 1000 17579118 ns/op 7.46 MB/s 5046744 B/op 131083 allocs/op +BenchmarkCacheSet-4 5000 3808874 ns/op 17.21 MB/s 1142 B/op 2 allocs/op +BenchmarkCacheGet-4 5000 3293849 ns/op 19.90 MB/s 1140 B/op 2 allocs/op +BenchmarkCacheSetGet-4 2000 8456061 ns/op 15.50 MB/s 2857 B/op 5 allocs/op +BenchmarkStdMapSet-4 2000 10559382 ns/op 6.21 MB/s 268413 B/op 65537 allocs/op +BenchmarkStdMapGet-4 5000 2687404 ns/op 24.39 MB/s 2558 B/op 13 allocs/op +BenchmarkStdMapSetGet-4 100 154641257 ns/op 0.85 MB/s 387405 B/op 65558 allocs/op +BenchmarkSyncMapSet-4 500 24703219 ns/op 2.65 MB/s 3426543 B/op 262411 allocs/op +BenchmarkSyncMapGet-4 5000 2265892 ns/op 28.92 MB/s 2545 B/op 79 allocs/op +BenchmarkSyncMapSetGet-4 1000 14595535 ns/op 8.98 MB/s 3417190 B/op 262277 allocs/op +``` + +`MB/s` column here actually means `millions of operations per second`. +As you can see, `fastcache` is faster than the `BigCache` in all the cases. +`fastcache` is faster than the standard Go map and `sync.Map` on workloads +with inserts. + + +### Limitations + +* Keys and values must be byte slices. Other types must be marshaled before + storing them in the cache. +* Big entries with sizes exceeding 64KB must be stored via [distinct API](http://godoc.org/github.com/VictoriaMetrics/fastcache#Cache.SetBig). +* There is no cache expiration. Entries are evicted from the cache only + on cache size overflow. Entry deadline may be stored inside the value in order + to implement cache expiration. + + +### Architecture details + +The cache uses ideas from [BigCache](https://github.com/allegro/bigcache): + +* The cache consists of many buckets, each with its own lock. + This helps scaling the performance on multi-core CPUs, since multiple + CPUs may concurrently access distinct buckets. +* Each bucket consists of a `hash(key) -> (key, value) position` map + and 64KB-sized byte slices (chunks) holding encoded `(key, value)` entries. + Each bucket contains only `O(chunksCount)` pointers. For instance, 64GB cache + would contain ~1M pointers, while similarly-sized `map[string][]byte` + would contain ~1B pointers for short keys and values. This would lead to + [huge GC overhead](https://syslog.ravelin.com/further-dangers-of-large-heaps-in-go-7a267b57d487). + +64KB-sized chunks reduce memory fragmentation and the total memory usage comparing +to a single big chunk per bucket. +Chunks are allocated off-heap if possible. This reduces total memory usage because +GC collects unused memory more frequently without the need in `GOGC` tweaking. + + +### Users + +* `Fastcache` has been extracted from [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) sources. + See [this article](https://medium.com/devopslinks/victoriametrics-creating-the-best-remote-storage-for-prometheus-5d92d66787ac) + for more info about `VictoriaMetrics`. + + +### FAQ + +#### What is the difference between `fastcache` and other similar caches like [BigCache](https://github.com/allegro/bigcache) or [FreeCache](https://github.com/coocood/freecache)? + +* `Fastcache` is faster. See benchmark results above. +* `Fastcache` uses less memory due to lower heap fragmentation. This allows + saving many GBs of memory on multi-GB caches. +* `Fastcache` API [is simpler](http://godoc.org/github.com/VictoriaMetrics/fastcache). + The API is designed to be used in zero-allocation mode. + + +#### Why `fastcache` doesn't support cache expiration? + +Because we don't need cache expiration in [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics). +Cached entries inside `VictoriaMetrics` never expire. They are automatically evicted on cache size overflow. + +It is easy to implement cache expiration on top of `fastcache` by caching values +with marshaled deadlines and verifying deadlines after reading these values +from the cache. + + +#### Why `fastcache` doesn't support advanced features such as [thundering herd protection](https://en.wikipedia.org/wiki/Thundering_herd_problem) or callbacks on entries' eviction? + +Because these features would complicate the code and would make it slower. +`Fastcache` source code is simple - just copy-paste it and implement the feature you want +on top of it. diff --git a/vendor/github.com/VictoriaMetrics/fastcache/bigcache.go b/vendor/github.com/VictoriaMetrics/fastcache/bigcache.go new file mode 100644 index 000000000..7ca6f483a --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/bigcache.go @@ -0,0 +1,152 @@ +package fastcache + +import ( + "sync" + "sync/atomic" + + xxhash "github.com/cespare/xxhash/v2" +) + +// maxSubvalueLen is the maximum size of subvalue chunk. +// +// - 16 bytes are for subkey encoding +// - 4 bytes are for len(key)+len(value) encoding inside fastcache +// - 1 byte is implementation detail of fastcache +const maxSubvalueLen = chunkSize - 16 - 4 - 1 + +// maxKeyLen is the maximum size of key. +// +// - 16 bytes are for (hash + valueLen) +// - 4 bytes are for len(key)+len(subkey) +// - 1 byte is implementation detail of fastcache +const maxKeyLen = chunkSize - 16 - 4 - 1 + +// SetBig sets (k, v) to c where len(v) may exceed 64KB. +// +// GetBig must be used for reading stored values. +// +// The stored entry may be evicted at any time either due to cache +// overflow or due to unlikely hash collision. +// Pass higher maxBytes value to New if the added items disappear +// frequently. +// +// It is safe to store entries smaller than 64KB with SetBig. +// +// k and v contents may be modified after returning from SetBig. +func (c *Cache) SetBig(k, v []byte) { + atomic.AddUint64(&c.bigStats.SetBigCalls, 1) + if len(k) > maxKeyLen { + atomic.AddUint64(&c.bigStats.TooBigKeyErrors, 1) + return + } + valueLen := len(v) + valueHash := xxhash.Sum64(v) + + // Split v into chunks with up to 64Kb each. + subkey := getSubkeyBuf() + var i uint64 + for len(v) > 0 { + subkey.B = marshalUint64(subkey.B[:0], valueHash) + subkey.B = marshalUint64(subkey.B, uint64(i)) + i++ + subvalueLen := maxSubvalueLen + if len(v) < subvalueLen { + subvalueLen = len(v) + } + subvalue := v[:subvalueLen] + v = v[subvalueLen:] + c.Set(subkey.B, subvalue) + } + + // Write metavalue, which consists of valueHash and valueLen. + subkey.B = marshalUint64(subkey.B[:0], valueHash) + subkey.B = marshalUint64(subkey.B, uint64(valueLen)) + c.Set(k, subkey.B) + putSubkeyBuf(subkey) +} + +// GetBig searches for the value for the given k, appends it to dst +// and returns the result. +// +// GetBig returns only values stored via SetBig. It doesn't work +// with values stored via other methods. +// +// k contents may be modified after returning from GetBig. +func (c *Cache) GetBig(dst, k []byte) []byte { + atomic.AddUint64(&c.bigStats.GetBigCalls, 1) + subkey := getSubkeyBuf() + defer putSubkeyBuf(subkey) + + // Read and parse metavalue + subkey.B = c.Get(subkey.B[:0], k) + if len(subkey.B) == 0 { + // Nothing found. + return dst + } + if len(subkey.B) != 16 { + atomic.AddUint64(&c.bigStats.InvalidMetavalueErrors, 1) + return dst + } + valueHash := unmarshalUint64(subkey.B) + valueLen := unmarshalUint64(subkey.B[8:]) + + // Collect result from chunks. + dstLen := len(dst) + if n := dstLen + int(valueLen) - cap(dst); n > 0 { + dst = append(dst[:cap(dst)], make([]byte, n)...) + } + dst = dst[:dstLen] + var i uint64 + for uint64(len(dst)-dstLen) < valueLen { + subkey.B = marshalUint64(subkey.B[:0], valueHash) + subkey.B = marshalUint64(subkey.B, uint64(i)) + i++ + dstNew := c.Get(dst, subkey.B) + if len(dstNew) == len(dst) { + // Cannot find subvalue + return dst[:dstLen] + } + dst = dstNew + } + + // Verify the obtained value. + v := dst[dstLen:] + if uint64(len(v)) != valueLen { + atomic.AddUint64(&c.bigStats.InvalidValueLenErrors, 1) + return dst[:dstLen] + } + h := xxhash.Sum64(v) + if h != valueHash { + atomic.AddUint64(&c.bigStats.InvalidValueHashErrors, 1) + return dst[:dstLen] + } + return dst +} + +func getSubkeyBuf() *bytesBuf { + v := subkeyPool.Get() + if v == nil { + return &bytesBuf{} + } + return v.(*bytesBuf) +} + +func putSubkeyBuf(bb *bytesBuf) { + bb.B = bb.B[:0] + subkeyPool.Put(bb) +} + +var subkeyPool sync.Pool + +type bytesBuf struct { + B []byte +} + +func marshalUint64(dst []byte, u uint64) []byte { + return append(dst, byte(u>>56), byte(u>>48), byte(u>>40), byte(u>>32), byte(u>>24), byte(u>>16), byte(u>>8), byte(u)) +} + +func unmarshalUint64(src []byte) uint64 { + _ = src[7] + return uint64(src[0])<<56 | uint64(src[1])<<48 | uint64(src[2])<<40 | uint64(src[3])<<32 | uint64(src[4])<<24 | uint64(src[5])<<16 | uint64(src[6])<<8 | uint64(src[7]) +} diff --git a/vendor/github.com/VictoriaMetrics/fastcache/fastcache.go b/vendor/github.com/VictoriaMetrics/fastcache/fastcache.go new file mode 100644 index 000000000..c0ef72491 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/fastcache.go @@ -0,0 +1,398 @@ +// Package fastcache implements fast in-memory cache. +// +// The package has been extracted from https://victoriametrics.com/ +package fastcache + +import ( + "fmt" + "sync" + "sync/atomic" + + xxhash "github.com/cespare/xxhash/v2" +) + +const bucketsCount = 512 + +const chunkSize = 64 * 1024 + +const bucketSizeBits = 40 + +const maxBucketSize uint64 = 1 << bucketSizeBits + +// Stats represents cache stats. +// +// Use Cache.UpdateStats for obtaining fresh stats from the cache. +type Stats struct { + // GetCalls is the number of Get calls. + GetCalls uint64 + + // SetCalls is the number of Set calls. + SetCalls uint64 + + // Misses is the number of cache misses. + Misses uint64 + + // Collisions is the number of cache collisions. + // + // Usually the number of collisions must be close to zero. + // High number of collisions suggest something wrong with cache. + Collisions uint64 + + // Corruptions is the number of detected corruptions of the cache. + // + // Corruptions may occur when corrupted cache is loaded from file. + Corruptions uint64 + + // EntriesCount is the current number of entries in the cache. + EntriesCount uint64 + + // BytesSize is the current size of the cache in bytes. + BytesSize uint64 + + // BigStats contains stats for GetBig/SetBig methods. + BigStats +} + +// Reset resets s, so it may be re-used again in Cache.UpdateStats. +func (s *Stats) Reset() { + *s = Stats{} +} + +// BigStats contains stats for GetBig/SetBig methods. +type BigStats struct { + // GetBigCalls is the number of GetBig calls. + GetBigCalls uint64 + + // SetBigCalls is the number of SetBig calls. + SetBigCalls uint64 + + // TooBigKeyErrors is the number of calls to SetBig with too big key. + TooBigKeyErrors uint64 + + // InvalidMetavalueErrors is the number of calls to GetBig resulting + // to invalid metavalue. + InvalidMetavalueErrors uint64 + + // InvalidValueLenErrors is the number of calls to GetBig resulting + // to a chunk with invalid length. + InvalidValueLenErrors uint64 + + // InvalidValueHashErrors is the number of calls to GetBig resulting + // to a chunk with invalid hash value. + InvalidValueHashErrors uint64 +} + +func (bs *BigStats) reset() { + atomic.StoreUint64(&bs.GetBigCalls, 0) + atomic.StoreUint64(&bs.SetBigCalls, 0) + atomic.StoreUint64(&bs.TooBigKeyErrors, 0) + atomic.StoreUint64(&bs.InvalidMetavalueErrors, 0) + atomic.StoreUint64(&bs.InvalidValueLenErrors, 0) + atomic.StoreUint64(&bs.InvalidValueHashErrors, 0) +} + +// Cache is a fast thread-safe inmemory cache optimized for big number +// of entries. +// +// It has much lower impact on GC comparing to a simple `map[string][]byte`. +// +// Use New or LoadFromFile* for creating new cache instance. +// Concurrent goroutines may call any Cache methods on the same cache instance. +// +// Call Reset when the cache is no longer needed. This reclaims the allocated +// memory. +type Cache struct { + buckets [bucketsCount]bucket + + bigStats BigStats +} + +// New returns new cache with the given maxBytes capacity in bytes. +// +// maxBytes must be smaller than the available RAM size for the app, +// since the cache holds data in memory. +// +// If maxBytes is less than 32MB, then the minimum cache capacity is 32MB. +func New(maxBytes int) *Cache { + if maxBytes <= 0 { + panic(fmt.Errorf("maxBytes must be greater than 0; got %d", maxBytes)) + } + var c Cache + maxBucketBytes := uint64((maxBytes + bucketsCount - 1) / bucketsCount) + for i := range c.buckets[:] { + c.buckets[i].Init(maxBucketBytes) + } + return &c +} + +// Set stores (k, v) in the cache. +// +// Get must be used for reading the stored entry. +// +// The stored entry may be evicted at any time either due to cache +// overflow or due to unlikely hash collision. +// Pass higher maxBytes value to New if the added items disappear +// frequently. +// +// (k, v) entries with summary size exceeding 64KB aren't stored in the cache. +// SetBig can be used for storing entries exceeding 64KB. +// +// k and v contents may be modified after returning from Set. +func (c *Cache) Set(k, v []byte) { + h := xxhash.Sum64(k) + idx := h % bucketsCount + c.buckets[idx].Set(k, v, h) +} + +// Get appends value by the key k to dst and returns the result. +// +// Get allocates new byte slice for the returned value if dst is nil. +// +// Get returns only values stored in c via Set. +// +// k contents may be modified after returning from Get. +func (c *Cache) Get(dst, k []byte) []byte { + h := xxhash.Sum64(k) + idx := h % bucketsCount + dst, _ = c.buckets[idx].Get(dst, k, h, true) + return dst +} + +// Has returns true if entry for the given key k exists in the cache. +func (c *Cache) Has(k []byte) bool { + h := xxhash.Sum64(k) + idx := h % bucketsCount + _, ok := c.buckets[idx].Get(nil, k, h, false) + return ok +} + +// Del deletes value for the given k from the cache. +// +// k contents may be modified after returning from Del. +func (c *Cache) Del(k []byte) { + h := xxhash.Sum64(k) + idx := h % bucketsCount + c.buckets[idx].Del(h) +} + +// Reset removes all the items from the cache. +func (c *Cache) Reset() { + for i := range c.buckets[:] { + c.buckets[i].Reset() + } + c.bigStats.reset() +} + +// UpdateStats adds cache stats to s. +// +// Call s.Reset before calling UpdateStats if s is re-used. +func (c *Cache) UpdateStats(s *Stats) { + for i := range c.buckets[:] { + c.buckets[i].UpdateStats(s) + } + s.GetBigCalls += atomic.LoadUint64(&c.bigStats.GetBigCalls) + s.SetBigCalls += atomic.LoadUint64(&c.bigStats.SetBigCalls) + s.TooBigKeyErrors += atomic.LoadUint64(&c.bigStats.TooBigKeyErrors) + s.InvalidMetavalueErrors += atomic.LoadUint64(&c.bigStats.InvalidMetavalueErrors) + s.InvalidValueLenErrors += atomic.LoadUint64(&c.bigStats.InvalidValueLenErrors) + s.InvalidValueHashErrors += atomic.LoadUint64(&c.bigStats.InvalidValueHashErrors) +} + +type bucket struct { + mu sync.RWMutex + + // chunks is a ring buffer with encoded (k, v) pairs. + // It consists of 64KB chunks. + chunks [][]byte + + // m maps hash(k) to idx of (k, v) pair in chunks. + m map[uint64]uint64 + + // idx points to chunks for writing the next (k, v) pair. + idx uint64 + + // gen is the generation of chunks. + gen uint64 + + getCalls uint64 + setCalls uint64 + misses uint64 + collisions uint64 + corruptions uint64 +} + +func (b *bucket) Init(maxBytes uint64) { + if maxBytes >= maxBucketSize { + panic(fmt.Errorf("too big maxBytes=%d; should be smaller than %d", maxBytes, maxBucketSize)) + } + maxChunks := (maxBytes + chunkSize - 1) / chunkSize + b.chunks = make([][]byte, maxChunks) + b.m = make(map[uint64]uint64) + b.Reset() +} + +func (b *bucket) Reset() { + b.mu.Lock() + chunks := b.chunks + for i := range chunks { + putChunk(chunks[i]) + chunks[i] = nil + } + bm := b.m + for k := range bm { + delete(bm, k) + } + b.idx = 0 + b.gen = 1 + atomic.StoreUint64(&b.getCalls, 0) + atomic.StoreUint64(&b.setCalls, 0) + atomic.StoreUint64(&b.misses, 0) + atomic.StoreUint64(&b.collisions, 0) + atomic.StoreUint64(&b.corruptions, 0) + b.mu.Unlock() +} + +func (b *bucket) Clean() { + b.mu.Lock() + bGen := b.gen + bIdx := b.idx + bm := b.m + for k, v := range bm { + gen := v >> bucketSizeBits + idx := v & ((1 << bucketSizeBits) - 1) + if gen == bGen && idx < bIdx || gen+1 == bGen && idx >= bIdx { + continue + } + delete(bm, k) + } + b.mu.Unlock() +} + +func (b *bucket) UpdateStats(s *Stats) { + s.GetCalls += atomic.LoadUint64(&b.getCalls) + s.SetCalls += atomic.LoadUint64(&b.setCalls) + s.Misses += atomic.LoadUint64(&b.misses) + s.Collisions += atomic.LoadUint64(&b.collisions) + s.Corruptions += atomic.LoadUint64(&b.corruptions) + + b.mu.RLock() + s.EntriesCount += uint64(len(b.m)) + for _, chunk := range b.chunks { + s.BytesSize += uint64(cap(chunk)) + } + b.mu.RUnlock() +} + +func (b *bucket) Set(k, v []byte, h uint64) { + setCalls := atomic.AddUint64(&b.setCalls, 1) + if setCalls%(1<<14) == 0 { + b.Clean() + } + + if len(k) >= (1<<16) || len(v) >= (1<<16) { + // Too big key or value - its length cannot be encoded + // with 2 bytes (see below). Skip the entry. + return + } + var kvLenBuf [4]byte + kvLenBuf[0] = byte(uint16(len(k)) >> 8) + kvLenBuf[1] = byte(len(k)) + kvLenBuf[2] = byte(uint16(len(v)) >> 8) + kvLenBuf[3] = byte(len(v)) + kvLen := uint64(len(kvLenBuf) + len(k) + len(v)) + if kvLen >= chunkSize { + // Do not store too big keys and values, since they do not + // fit a chunk. + return + } + + b.mu.Lock() + idx := b.idx + idxNew := idx + kvLen + chunkIdx := idx / chunkSize + chunkIdxNew := idxNew / chunkSize + if chunkIdxNew > chunkIdx { + if chunkIdxNew >= uint64(len(b.chunks)) { + idx = 0 + idxNew = kvLen + chunkIdx = 0 + b.gen++ + if b.gen == 0 { + b.gen = 1 + } + } else { + idx = chunkIdxNew * chunkSize + idxNew = idx + kvLen + chunkIdx = chunkIdxNew + } + b.chunks[chunkIdx] = b.chunks[chunkIdx][:0] + } + chunk := b.chunks[chunkIdx] + if chunk == nil { + chunk = getChunk() + chunk = chunk[:0] + } + chunk = append(chunk, kvLenBuf[:]...) + chunk = append(chunk, k...) + chunk = append(chunk, v...) + b.chunks[chunkIdx] = chunk + b.m[h] = idx | (b.gen << bucketSizeBits) + b.idx = idxNew + b.mu.Unlock() +} + +func (b *bucket) Get(dst, k []byte, h uint64, returnDst bool) ([]byte, bool) { + atomic.AddUint64(&b.getCalls, 1) + found := false + b.mu.RLock() + v := b.m[h] + if v > 0 { + gen := v >> bucketSizeBits + idx := v & ((1 << bucketSizeBits) - 1) + if gen == b.gen && idx < b.idx || gen+1 == b.gen && idx >= b.idx { + chunkIdx := idx / chunkSize + if chunkIdx >= uint64(len(b.chunks)) { + // Corrupted data during the load from file. Just skip it. + atomic.AddUint64(&b.corruptions, 1) + goto end + } + chunk := b.chunks[chunkIdx] + idx %= chunkSize + if idx+4 >= chunkSize { + // Corrupted data during the load from file. Just skip it. + atomic.AddUint64(&b.corruptions, 1) + goto end + } + kvLenBuf := chunk[idx : idx+4] + keyLen := (uint64(kvLenBuf[0]) << 8) | uint64(kvLenBuf[1]) + valLen := (uint64(kvLenBuf[2]) << 8) | uint64(kvLenBuf[3]) + idx += 4 + if idx+keyLen+valLen >= chunkSize { + // Corrupted data during the load from file. Just skip it. + atomic.AddUint64(&b.corruptions, 1) + goto end + } + if string(k) == string(chunk[idx:idx+keyLen]) { + idx += keyLen + if returnDst { + dst = append(dst, chunk[idx:idx+valLen]...) + } + found = true + } else { + atomic.AddUint64(&b.collisions, 1) + } + } + } +end: + b.mu.RUnlock() + if !found { + atomic.AddUint64(&b.misses, 1) + } + return dst, found +} + +func (b *bucket) Del(h uint64) { + b.mu.Lock() + delete(b.m, h) + b.mu.Unlock() +} diff --git a/vendor/github.com/VictoriaMetrics/fastcache/file.go b/vendor/github.com/VictoriaMetrics/fastcache/file.go new file mode 100644 index 000000000..9c291afb0 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/file.go @@ -0,0 +1,397 @@ +package fastcache + +import ( + "encoding/binary" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "regexp" + "runtime" + + "github.com/golang/snappy" +) + +// SaveToFile atomically saves cache data to the given filePath using a single +// CPU core. +// +// SaveToFile may be called concurrently with other operations on the cache. +// +// The saved data may be loaded with LoadFromFile*. +// +// See also SaveToFileConcurrent for faster saving to file. +func (c *Cache) SaveToFile(filePath string) error { + return c.SaveToFileConcurrent(filePath, 1) +} + +// SaveToFileConcurrent saves cache data to the given filePath using concurrency +// CPU cores. +// +// SaveToFileConcurrent may be called concurrently with other operations +// on the cache. +// +// The saved data may be loaded with LoadFromFile*. +// +// See also SaveToFile. +func (c *Cache) SaveToFileConcurrent(filePath string, concurrency int) error { + // Create dir if it doesn't exist. + dir := filepath.Dir(filePath) + if _, err := os.Stat(dir); err != nil { + if !os.IsNotExist(err) { + return fmt.Errorf("cannot stat %q: %s", dir, err) + } + if err := os.MkdirAll(dir, 0755); err != nil { + return fmt.Errorf("cannot create dir %q: %s", dir, err) + } + } + + // Save cache data into a temporary directory. + tmpDir, err := ioutil.TempDir(dir, "fastcache.tmp.") + if err != nil { + return fmt.Errorf("cannot create temporary dir inside %q: %s", dir, err) + } + defer func() { + if tmpDir != "" { + _ = os.RemoveAll(tmpDir) + } + }() + gomaxprocs := runtime.GOMAXPROCS(-1) + if concurrency <= 0 || concurrency > gomaxprocs { + concurrency = gomaxprocs + } + if err := c.save(tmpDir, concurrency); err != nil { + return fmt.Errorf("cannot save cache data to temporary dir %q: %s", tmpDir, err) + } + + // Remove old filePath contents, since os.Rename may return + // error if filePath dir exists. + if err := os.RemoveAll(filePath); err != nil { + return fmt.Errorf("cannot remove old contents at %q: %s", filePath, err) + } + if err := os.Rename(tmpDir, filePath); err != nil { + return fmt.Errorf("cannot move temporary dir %q to %q: %s", tmpDir, filePath, err) + } + tmpDir = "" + return nil +} + +// LoadFromFile loads cache data from the given filePath. +// +// See SaveToFile* for saving cache data to file. +func LoadFromFile(filePath string) (*Cache, error) { + return load(filePath, 0) +} + +// LoadFromFileOrNew tries loading cache data from the given filePath. +// +// The function falls back to creating new cache with the given maxBytes +// capacity if error occurs during loading the cache from file. +func LoadFromFileOrNew(filePath string, maxBytes int) *Cache { + c, err := load(filePath, maxBytes) + if err == nil { + return c + } + return New(maxBytes) +} + +func (c *Cache) save(dir string, workersCount int) error { + if err := saveMetadata(c, dir); err != nil { + return err + } + + // Save buckets by workersCount concurrent workers. + workCh := make(chan int, workersCount) + results := make(chan error) + for i := 0; i < workersCount; i++ { + go func(workerNum int) { + results <- saveBuckets(c.buckets[:], workCh, dir, workerNum) + }(i) + } + // Feed workers with work + for i := range c.buckets[:] { + workCh <- i + } + close(workCh) + + // Read results. + var err error + for i := 0; i < workersCount; i++ { + result := <-results + if result != nil && err != nil { + err = result + } + } + return err +} + +func load(filePath string, maxBytes int) (*Cache, error) { + maxBucketChunks, err := loadMetadata(filePath) + if err != nil { + return nil, err + } + if maxBytes > 0 { + maxBucketBytes := uint64((maxBytes + bucketsCount - 1) / bucketsCount) + expectedBucketChunks := (maxBucketBytes + chunkSize - 1) / chunkSize + if maxBucketChunks != expectedBucketChunks { + return nil, fmt.Errorf("cache file %s contains maxBytes=%d; want %d", filePath, maxBytes, expectedBucketChunks*chunkSize*bucketsCount) + } + } + + // Read bucket files from filePath dir. + d, err := os.Open(filePath) + if err != nil { + return nil, fmt.Errorf("cannot open %q: %s", filePath, err) + } + defer func() { + _ = d.Close() + }() + fis, err := d.Readdir(-1) + if err != nil { + return nil, fmt.Errorf("cannot read files from %q: %s", filePath, err) + } + results := make(chan error) + workersCount := 0 + var c Cache + for _, fi := range fis { + fn := fi.Name() + if fi.IsDir() || !dataFileRegexp.MatchString(fn) { + continue + } + workersCount++ + go func(dataPath string) { + results <- loadBuckets(c.buckets[:], dataPath, maxBucketChunks) + }(filePath + "/" + fn) + } + err = nil + for i := 0; i < workersCount; i++ { + result := <-results + if result != nil && err == nil { + err = result + } + } + if err != nil { + return nil, err + } + return &c, nil +} + +func saveMetadata(c *Cache, dir string) error { + metadataPath := dir + "/metadata.bin" + metadataFile, err := os.Create(metadataPath) + if err != nil { + return fmt.Errorf("cannot create %q: %s", metadataPath, err) + } + defer func() { + _ = metadataFile.Close() + }() + maxBucketChunks := uint64(cap(c.buckets[0].chunks)) + if err := writeUint64(metadataFile, maxBucketChunks); err != nil { + return fmt.Errorf("cannot write maxBucketChunks=%d to %q: %s", maxBucketChunks, metadataPath, err) + } + return nil +} + +func loadMetadata(dir string) (uint64, error) { + metadataPath := dir + "/metadata.bin" + metadataFile, err := os.Open(metadataPath) + if err != nil { + return 0, fmt.Errorf("cannot open %q: %s", metadataPath, err) + } + defer func() { + _ = metadataFile.Close() + }() + maxBucketChunks, err := readUint64(metadataFile) + if err != nil { + return 0, fmt.Errorf("cannot read maxBucketChunks from %q: %s", metadataPath, err) + } + return maxBucketChunks, nil +} + +var dataFileRegexp = regexp.MustCompile(`^data\.\d+\.bin$`) + +func saveBuckets(buckets []bucket, workCh <-chan int, dir string, workerNum int) error { + dataPath := fmt.Sprintf("%s/data.%d.bin", dir, workerNum) + dataFile, err := os.Create(dataPath) + if err != nil { + return fmt.Errorf("cannot create %q: %s", dataPath, err) + } + defer func() { + _ = dataFile.Close() + }() + zw := snappy.NewBufferedWriter(dataFile) + for bucketNum := range workCh { + if err := writeUint64(zw, uint64(bucketNum)); err != nil { + return fmt.Errorf("cannot write bucketNum=%d to %q: %s", bucketNum, dataPath, err) + } + if err := buckets[bucketNum].Save(zw); err != nil { + return fmt.Errorf("cannot save bucket[%d] to %q: %s", bucketNum, dataPath, err) + } + } + if err := zw.Close(); err != nil { + return fmt.Errorf("cannot close snappy.Writer for %q: %s", dataPath, err) + } + return nil +} + +func loadBuckets(buckets []bucket, dataPath string, maxChunks uint64) error { + dataFile, err := os.Open(dataPath) + if err != nil { + return fmt.Errorf("cannot open %q: %s", dataPath, err) + } + defer func() { + _ = dataFile.Close() + }() + zr := snappy.NewReader(dataFile) + for { + bucketNum, err := readUint64(zr) + if err == io.EOF { + // Reached the end of file. + return nil + } + if bucketNum >= uint64(len(buckets)) { + return fmt.Errorf("unexpected bucketNum read from %q: %d; must be smaller than %d", dataPath, bucketNum, len(buckets)) + } + if err := buckets[bucketNum].Load(zr, maxChunks); err != nil { + return fmt.Errorf("cannot load bucket[%d] from %q: %s", bucketNum, dataPath, err) + } + } +} + +func (b *bucket) Save(w io.Writer) error { + b.Clean() + + b.mu.RLock() + defer b.mu.RUnlock() + + // Store b.idx, b.gen and b.m to w. + + bIdx := b.idx + bGen := b.gen + chunksLen := 0 + for _, chunk := range b.chunks { + if chunk == nil { + break + } + chunksLen++ + } + kvs := make([]byte, 0, 2*8*len(b.m)) + var u64Buf [8]byte + for k, v := range b.m { + binary.LittleEndian.PutUint64(u64Buf[:], k) + kvs = append(kvs, u64Buf[:]...) + binary.LittleEndian.PutUint64(u64Buf[:], v) + kvs = append(kvs, u64Buf[:]...) + } + + if err := writeUint64(w, bIdx); err != nil { + return fmt.Errorf("cannot write b.idx: %s", err) + } + if err := writeUint64(w, bGen); err != nil { + return fmt.Errorf("cannot write b.gen: %s", err) + } + if err := writeUint64(w, uint64(len(kvs))/2/8); err != nil { + return fmt.Errorf("cannot write len(b.m): %s", err) + } + if _, err := w.Write(kvs); err != nil { + return fmt.Errorf("cannot write b.m: %s", err) + } + + // Store b.chunks to w. + if err := writeUint64(w, uint64(chunksLen)); err != nil { + return fmt.Errorf("cannot write len(b.chunks): %s", err) + } + for chunkIdx := 0; chunkIdx < chunksLen; chunkIdx++ { + chunk := b.chunks[chunkIdx][:chunkSize] + if _, err := w.Write(chunk); err != nil { + return fmt.Errorf("cannot write b.chunks[%d]: %s", chunkIdx, err) + } + } + + return nil +} + +func (b *bucket) Load(r io.Reader, maxChunks uint64) error { + bIdx, err := readUint64(r) + if err != nil { + return fmt.Errorf("cannot read b.idx: %s", err) + } + bGen, err := readUint64(r) + if err != nil { + return fmt.Errorf("cannot read b.gen: %s", err) + } + kvsLen, err := readUint64(r) + if err != nil { + return fmt.Errorf("cannot read len(b.m): %s", err) + } + kvsLen *= 2 * 8 + kvs := make([]byte, kvsLen) + if _, err := io.ReadFull(r, kvs); err != nil { + return fmt.Errorf("cannot read b.m: %s", err) + } + m := make(map[uint64]uint64, kvsLen/2/8) + for len(kvs) > 0 { + k := binary.LittleEndian.Uint64(kvs) + kvs = kvs[8:] + v := binary.LittleEndian.Uint64(kvs) + kvs = kvs[8:] + m[k] = v + } + + maxBytes := maxChunks * chunkSize + if maxBytes >= maxBucketSize { + return fmt.Errorf("too big maxBytes=%d; should be smaller than %d", maxBytes, maxBucketSize) + } + chunks := make([][]byte, maxChunks) + chunksLen, err := readUint64(r) + if err != nil { + return fmt.Errorf("cannot read len(b.chunks): %s", err) + } + if chunksLen > uint64(maxChunks) { + return fmt.Errorf("chunksLen=%d cannot exceed maxChunks=%d", chunksLen, maxChunks) + } + currChunkIdx := bIdx / chunkSize + if currChunkIdx > 0 && currChunkIdx >= chunksLen { + return fmt.Errorf("too big bIdx=%d; should be smaller than %d", bIdx, chunksLen*chunkSize) + } + for chunkIdx := uint64(0); chunkIdx < chunksLen; chunkIdx++ { + chunk := getChunk() + if _, err := io.ReadFull(r, chunk); err != nil { + return fmt.Errorf("cannot read b.chunks[%d]: %s", chunkIdx, err) + } + chunks[chunkIdx] = chunk + } + // Adjust len for the chunk pointed by currChunkIdx. + if chunksLen > 0 { + chunkLen := bIdx % chunkSize + chunks[currChunkIdx] = chunks[currChunkIdx][:chunkLen] + } + + b.mu.Lock() + for _, chunk := range b.chunks { + putChunk(chunk) + } + b.chunks = chunks + b.m = m + b.idx = bIdx + b.gen = bGen + b.mu.Unlock() + + return nil +} + +func writeUint64(w io.Writer, u uint64) error { + var u64Buf [8]byte + binary.LittleEndian.PutUint64(u64Buf[:], u) + _, err := w.Write(u64Buf[:]) + return err +} + +func readUint64(r io.Reader) (uint64, error) { + var u64Buf [8]byte + if _, err := io.ReadFull(r, u64Buf[:]); err != nil { + return 0, err + } + u := binary.LittleEndian.Uint64(u64Buf[:]) + return u, nil +} diff --git a/vendor/github.com/VictoriaMetrics/fastcache/go.mod b/vendor/github.com/VictoriaMetrics/fastcache/go.mod new file mode 100644 index 000000000..9b0693f31 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/go.mod @@ -0,0 +1,11 @@ +module github.com/VictoriaMetrics/fastcache + +require ( + github.com/OneOfOne/xxhash v1.2.5 // indirect + github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 + github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/golang/snappy v0.0.1 + github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9 // indirect + github.com/stretchr/testify v1.3.0 // indirect +) diff --git a/vendor/github.com/VictoriaMetrics/fastcache/go.sum b/vendor/github.com/VictoriaMetrics/fastcache/go.sum new file mode 100644 index 000000000..3ff9edb14 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/go.sum @@ -0,0 +1,24 @@ +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= +github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 h1:pl4eWIqvFe/Kg3zkn7NxevNzILnZYWDCG7qbA1CJik0= +github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9 h1:5Cp3cVwpQP4aCQ6jx6dNLP3IarbYiuStmIzYu+BjQwY= +github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/vendor/github.com/VictoriaMetrics/fastcache/malloc_heap.go b/vendor/github.com/VictoriaMetrics/fastcache/malloc_heap.go new file mode 100644 index 000000000..79a71832a --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/malloc_heap.go @@ -0,0 +1,11 @@ +// +build appengine windows + +package fastcache + +func getChunk() []byte { + return make([]byte, chunkSize) +} + +func putChunk(chunk []byte) { + // No-op. +} diff --git a/vendor/github.com/VictoriaMetrics/fastcache/malloc_mmap.go b/vendor/github.com/VictoriaMetrics/fastcache/malloc_mmap.go new file mode 100644 index 000000000..424b79b43 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/fastcache/malloc_mmap.go @@ -0,0 +1,52 @@ +// +build !appengine,!windows + +package fastcache + +import ( + "fmt" + "sync" + "syscall" + "unsafe" +) + +const chunksPerAlloc = 1024 + +var ( + freeChunks []*[chunkSize]byte + freeChunksLock sync.Mutex +) + +func getChunk() []byte { + freeChunksLock.Lock() + if len(freeChunks) == 0 { + // Allocate offheap memory, so GOGC won't take into account cache size. + // This should reduce free memory waste. + data, err := syscall.Mmap(-1, 0, chunkSize*chunksPerAlloc, syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_ANON|syscall.MAP_PRIVATE) + if err != nil { + panic(fmt.Errorf("cannot allocate %d bytes via mmap: %s", chunkSize*chunksPerAlloc, err)) + } + for len(data) > 0 { + p := (*[chunkSize]byte)(unsafe.Pointer(&data[0])) + freeChunks = append(freeChunks, p) + data = data[chunkSize:] + } + } + n := len(freeChunks) - 1 + p := freeChunks[n] + freeChunks[n] = nil + freeChunks = freeChunks[:n] + freeChunksLock.Unlock() + return p[:] +} + +func putChunk(chunk []byte) { + if chunk == nil { + return + } + chunk = chunk[:chunkSize] + p := (*[chunkSize]byte)(unsafe.Pointer(&chunk[0])) + + freeChunksLock.Lock() + freeChunks = append(freeChunks, p) + freeChunksLock.Unlock() +} diff --git a/vendor/github.com/VictoriaMetrics/metrics/.travis.yml b/vendor/github.com/VictoriaMetrics/metrics/.travis.yml new file mode 100644 index 000000000..39d07e637 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/.travis.yml @@ -0,0 +1,20 @@ +language: go + +go: + - 1.12.x + +script: + # build test for supported platforms + - GOOS=linux go build + - GOOS=darwin go build + - GOOS=freebsd go build + - GOOS=windows go build + - GOARCH=386 go build + + # run tests on a standard platform + - go test -v ./... -coverprofile=coverage.txt -covermode=atomic + - go test -v ./... -race + +after_success: + # Upload coverage results to codecov.io + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/VictoriaMetrics/metrics/LICENSE b/vendor/github.com/VictoriaMetrics/metrics/LICENSE new file mode 100644 index 000000000..539b7a4c0 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2019 VictoriaMetrics + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/VictoriaMetrics/metrics/README.md b/vendor/github.com/VictoriaMetrics/metrics/README.md new file mode 100644 index 000000000..ab3885c51 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/README.md @@ -0,0 +1,87 @@ +[![Build Status](https://travis-ci.org/VictoriaMetrics/metrics.svg)](https://travis-ci.org/VictoriaMetrics/metrics) +[![GoDoc](https://godoc.org/github.com/VictoriaMetrics/metrics?status.svg)](http://godoc.org/github.com/VictoriaMetrics/metrics) +[![Go Report](https://goreportcard.com/badge/github.com/VictoriaMetrics/metrics)](https://goreportcard.com/report/github.com/VictoriaMetrics/metrics) +[![codecov](https://codecov.io/gh/VictoriaMetrics/metrics/branch/master/graph/badge.svg)](https://codecov.io/gh/VictoriaMetrics/metrics) + + +# metrics - lightweight package for exporting metrics in Prometheus format + + +### Features + +* Lightweight. Has minimal number of third-party dependencies and all these deps are small. + See [this article](https://medium.com/@valyala/stripping-dependency-bloat-in-victoriametrics-docker-image-983fb5912b0d) for details. +* Easy to use. See the [API docs](http://godoc.org/github.com/VictoriaMetrics/metrics). +* Fast. + + +### Limitations + +* It doesn't implement advanced functionality from [github.com/prometheus/client_golang](https://godoc.org/github.com/prometheus/client_golang). + + +### Usage + +```go +import "github.com/VictoriaMetrics/metrics" + +// Register various time series. +// Time series name may contain labels in Prometheus format - see below. +var ( + // Register counter without labels. + requestsTotal = metrics.NewCounter("requests_total") + + // Register summary with a single label. + requestDuration = metrics.NewSummary(`requests_duration_seconds{path="/foobar/baz"}`) + + // Register gauge with two labels. + queueSize = metrics.NewGauge(`queue_size{queue="foobar",topic="baz"}`, func() float64 { + return float64(foobarQueue.Len()) + }) +) + +// ... +func requestHandler() { + // Increment requestTotal counter. + requestsTotal.Inc() + + startTime := time.Now() + processRequest() + // Update requestDuration summary. + requestDuration.UpdateDuration(startTime) +} + +// Expose the registered metrics at `/metrics` path. +http.HandleFunc("/metrics", func(w http.ResponseWriter, req *http.Request) { + metrics.WritePrometheus(w, true) +}) +``` + +See [docs](http://godoc.org/github.com/VictoriaMetrics/metrics) for more info. + + +### Users + +* `Metrics` has been extracted from [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) sources. + See [this article](https://medium.com/devopslinks/victoriametrics-creating-the-best-remote-storage-for-prometheus-5d92d66787ac) + for more info about `VictoriaMetrics`. + + +### FAQ + +#### Why the `metrics` API isn't compatible with `github.com/prometheus/client_golang`? + +Because the `github.com/prometheus/client_golang` is too complex and is hard to use. + + +#### Why the `metrics.WritePrometheus` doesn't expose documentation for each metric? + +Because this documentation is ignored by Prometheus. The documentation is for users. +Just add comments in the source code or in other suitable place explaining each metric +exposed from your application. + + +#### How to implement [CounterVec](https://godoc.org/github.com/prometheus/client_golang/prometheus#CounterVec) in `metrics`? + +Just use [GetOrCreateCounter](http://godoc.org/github.com/VictoriaMetrics/metrics#GetOrCreateCounter) +instead of `CounterVec.With`. See [this example](https://godoc.org/github.com/VictoriaMetrics/metrics#example-Counter--Vec) for details. diff --git a/vendor/github.com/VictoriaMetrics/metrics/counter.go b/vendor/github.com/VictoriaMetrics/metrics/counter.go new file mode 100644 index 000000000..60a62b353 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/counter.go @@ -0,0 +1,104 @@ +package metrics + +import ( + "fmt" + "io" + "sync/atomic" +) + +// NewCounter registers and returns new counter with the given name. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned counter is safe to use from concurrent goroutines. +func NewCounter(name string) *Counter { + c := &Counter{} + registerMetric(name, c) + return c +} + +// Counter is a counter. +// +// It may be used as a gauge if Dec and Set are called. +type Counter struct { + n uint64 +} + +// Inc increments c. +func (c *Counter) Inc() { + atomic.AddUint64(&c.n, 1) +} + +// Dec decrements c. +func (c *Counter) Dec() { + atomic.AddUint64(&c.n, ^uint64(0)) +} + +// Add adds n to c. +func (c *Counter) Add(n int) { + atomic.AddUint64(&c.n, uint64(n)) +} + +// Get returns the current value for c. +func (c *Counter) Get() uint64 { + return atomic.LoadUint64(&c.n) +} + +// Set sets c value to n. +func (c *Counter) Set(n uint64) { + atomic.StoreUint64(&c.n, n) +} + +// marshalTo marshals c with the given prefix to w. +func (c *Counter) marshalTo(prefix string, w io.Writer) { + v := c.Get() + fmt.Fprintf(w, "%s %d\n", prefix, v) +} + +// GetOrCreateCounter returns registered counter with the given name +// or creates new counter if the registry doesn't contain counter with +// the given name. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned counter is safe to use from concurrent goroutines. +// +// Performance tip: prefer NewCounter instead of GetOrCreateCounter. +func GetOrCreateCounter(name string) *Counter { + metricsMapLock.Lock() + nm := metricsMap[name] + metricsMapLock.Unlock() + if nm == nil { + // Slow path - create and register missing counter. + if err := validateMetric(name); err != nil { + panic(fmt.Errorf("BUG: invalid metric name %q: %s", name, err)) + } + nmNew := &namedMetric{ + name: name, + metric: &Counter{}, + } + metricsMapLock.Lock() + nm = metricsMap[name] + if nm == nil { + nm = nmNew + metricsMap[name] = nm + metricsList = append(metricsList, nm) + } + metricsMapLock.Unlock() + } + c, ok := nm.metric.(*Counter) + if !ok { + panic(fmt.Errorf("BUG: metric %q isn't a Counter. It is %T", name, nm.metric)) + } + return c +} diff --git a/vendor/github.com/VictoriaMetrics/metrics/gauge.go b/vendor/github.com/VictoriaMetrics/metrics/gauge.go new file mode 100644 index 000000000..a71886da4 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/gauge.go @@ -0,0 +1,100 @@ +package metrics + +import ( + "fmt" + "io" +) + +// NewGauge registers and returns gauge with the given name, which calls f +// to obtain gauge value. +// +// name must be valid Prometheus-compatible metric with possible labels. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// f must be safe for concurrent calls. +// +// The returned gauge is safe to use from concurrent goroutines. +func NewGauge(name string, f func() float64) *Gauge { + if f == nil { + panic(fmt.Errorf("BUG: f cannot be nil")) + } + g := &Gauge{ + f: f, + } + registerMetric(name, g) + return g +} + +// Gauge is a float64 gauge. +// +// See also Counter, which could be used as a gauge with Set and Dec calls. +type Gauge struct { + f func() float64 +} + +// Get returns the current value for g. +func (g *Gauge) Get() float64 { + return g.f() +} + +func (g *Gauge) marshalTo(prefix string, w io.Writer) { + v := g.f() + if float64(int64(v)) == v { + // Marshal integer values without scientific notations + fmt.Fprintf(w, "%s %d\n", prefix, int64(v)) + } else { + fmt.Fprintf(w, "%s %g\n", prefix, v) + } +} + +// GetOrCreateGauge returns registered gauge with the given name +// or creates new gauge if the registry doesn't contain gauge with +// the given name. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned gauge is safe to use from concurrent goroutines. +// +// Performance tip: prefer NewGauge instead of GetOrCreateGauge. +func GetOrCreateGauge(name string, f func() float64) *Gauge { + metricsMapLock.Lock() + nm := metricsMap[name] + metricsMapLock.Unlock() + if nm == nil { + // Slow path - create and register missing gauge. + if f == nil { + panic(fmt.Errorf("BUG: f cannot be nil")) + } + if err := validateMetric(name); err != nil { + panic(fmt.Errorf("BUG: invalid metric name %q: %s", name, err)) + } + nmNew := &namedMetric{ + name: name, + metric: &Gauge{ + f: f, + }, + } + metricsMapLock.Lock() + nm = metricsMap[name] + if nm == nil { + nm = nmNew + metricsMap[name] = nm + metricsList = append(metricsList, nm) + } + metricsMapLock.Unlock() + } + g, ok := nm.metric.(*Gauge) + if !ok { + panic(fmt.Errorf("BUG: metric %q isn't a Gauge. It is %T", name, nm.metric)) + } + return g +} diff --git a/vendor/github.com/VictoriaMetrics/metrics/go.mod b/vendor/github.com/VictoriaMetrics/metrics/go.mod new file mode 100644 index 000000000..7a4629bb2 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/go.mod @@ -0,0 +1,3 @@ +module github.com/VictoriaMetrics/metrics + +require github.com/valyala/histogram v1.0.1 diff --git a/vendor/github.com/VictoriaMetrics/metrics/go.sum b/vendor/github.com/VictoriaMetrics/metrics/go.sum new file mode 100644 index 000000000..9dd64f0a0 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/go.sum @@ -0,0 +1,4 @@ +github.com/valyala/fastrand v1.0.0 h1:LUKT9aKer2dVQNUi3waewTbKV+7H17kvWFNKs2ObdkI= +github.com/valyala/fastrand v1.0.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ= +github.com/valyala/histogram v1.0.1 h1:FzA7n2Tz/wKRMejgu3PV1vw3htAklTjjuoI6z3d4KDg= +github.com/valyala/histogram v1.0.1/go.mod h1:lQy0xA4wUz2+IUnf97SivorsJIp8FxsnRd6x25q7Mto= diff --git a/vendor/github.com/VictoriaMetrics/metrics/metrics.go b/vendor/github.com/VictoriaMetrics/metrics/metrics.go new file mode 100644 index 000000000..e427360c0 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/metrics.go @@ -0,0 +1,142 @@ +// Package metrics implements Prometheus-compatible metrics for applications. +// +// This package is lightweight alternative to https://github.com/prometheus/client_golang +// with simpler API and smaller dependencies. +// +// Usage: +// +// 1. Register the required metrics via New* functions. +// 2. Expose them to `/metrics` page via WritePrometheus. +// 3. Update the registered metrics during application lifetime. +package metrics + +import ( + "fmt" + "io" + "runtime" + "sort" + "sync" + "time" + + "github.com/valyala/histogram" +) + +var ( + metricsMapLock sync.Mutex + metricsList []*namedMetric + metricsMap = make(map[string]*namedMetric) +) + +type namedMetric struct { + name string + metric metric +} + +type metric interface { + marshalTo(prefix string, w io.Writer) +} + +// WritePrometheus writes all the registered metrics in Prometheus format to w. +// +// If exposeProcessMetrics is true, then various `go_*` metrics are exposed +// for the current process. +// +// The WritePrometheus func is usually called inside "/metrics" handler: +// +// http.HandleFunc("/metrics", func(w http.ResponseWriter, req *http.Request) { +// metrics.WritePrometheus(w, true) +// }) +// +func WritePrometheus(w io.Writer, exposeProcessMetrics bool) { + lessFunc := func(i, j int) bool { + return metricsList[i].name < metricsList[j].name + } + metricsMapLock.Lock() + if !sort.SliceIsSorted(metricsList, lessFunc) { + sort.Slice(metricsList, lessFunc) + } + for _, nm := range metricsList { + nm.metric.marshalTo(nm.name, w) + } + metricsMapLock.Unlock() + if exposeProcessMetrics { + writeProcessMetrics(w) + } +} + +func writeProcessMetrics(w io.Writer) { + var ms runtime.MemStats + runtime.ReadMemStats(&ms) + fmt.Fprintf(w, `go_memstats_alloc_bytes %d`+"\n", ms.Alloc) + fmt.Fprintf(w, `go_memstats_alloc_bytes_total %d`+"\n", ms.TotalAlloc) + fmt.Fprintf(w, `go_memstats_buck_hash_sys_bytes %d`+"\n", ms.BuckHashSys) + fmt.Fprintf(w, `go_memstats_frees_total %d`+"\n", ms.Frees) + fmt.Fprintf(w, `go_memstats_gc_cpu_fraction %f`+"\n", ms.GCCPUFraction) + fmt.Fprintf(w, `go_memstats_gc_sys_bytes %d`+"\n", ms.GCSys) + fmt.Fprintf(w, `go_memstats_heap_alloc_bytes %d`+"\n", ms.HeapAlloc) + fmt.Fprintf(w, `go_memstats_heap_idle_bytes %d`+"\n", ms.HeapIdle) + fmt.Fprintf(w, `go_memstats_heap_inuse_bytes %d`+"\n", ms.HeapInuse) + fmt.Fprintf(w, `go_memstats_heap_objects %d`+"\n", ms.HeapObjects) + fmt.Fprintf(w, `go_memstats_heap_released_bytes %d`+"\n", ms.HeapReleased) + fmt.Fprintf(w, `go_memstats_heap_sys_bytes %d`+"\n", ms.HeapSys) + fmt.Fprintf(w, `go_memstats_last_gc_time_seconds %f`+"\n", float64(ms.LastGC)/1e9) + fmt.Fprintf(w, `go_memstats_lookups_total %d`+"\n", ms.Lookups) + fmt.Fprintf(w, `go_memstats_mallocs_total %d`+"\n", ms.Mallocs) + fmt.Fprintf(w, `go_memstats_mcache_inuse_bytes %d`+"\n", ms.MCacheInuse) + fmt.Fprintf(w, `go_memstats_mcache_sys_bytes %d`+"\n", ms.MCacheSys) + fmt.Fprintf(w, `go_memstats_mspan_inuse_bytes %d`+"\n", ms.MSpanInuse) + fmt.Fprintf(w, `go_memstats_mspan_sys_bytes %d`+"\n", ms.MSpanSys) + fmt.Fprintf(w, `go_memstats_next_gc_bytes %d`+"\n", ms.NextGC) + fmt.Fprintf(w, `go_memstats_other_sys_bytes %d`+"\n", ms.OtherSys) + fmt.Fprintf(w, `go_memstats_stack_inuse_bytes %d`+"\n", ms.StackInuse) + fmt.Fprintf(w, `go_memstats_stack_sys_bytes %d`+"\n", ms.StackSys) + fmt.Fprintf(w, `go_memstats_sys_bytes %d`+"\n", ms.Sys) + + fmt.Fprintf(w, `go_cgo_calls_count %d`+"\n", runtime.NumCgoCall()) + fmt.Fprintf(w, `go_cpu_count %d`+"\n", runtime.NumCPU()) + + gcPauses := histogram.NewFast() + for _, pauseNs := range ms.PauseNs[:] { + gcPauses.Update(float64(pauseNs) / 1e9) + } + phis := []float64{0, 0.25, 0.5, 0.75, 1} + quantiles := make([]float64, 0, len(phis)) + for i, q := range gcPauses.Quantiles(quantiles[:0], phis) { + fmt.Fprintf(w, `go_gc_duration_seconds{quantile="%g"} %f`+"\n", phis[i], q) + } + fmt.Fprintf(w, `go_gc_duration_seconds_sum %f`+"\n", float64(ms.PauseTotalNs)/1e9) + fmt.Fprintf(w, `go_gc_duration_seconds_count %d`+"\n", ms.NumGC) + fmt.Fprintf(w, `go_gc_forced_count %d`+"\n", ms.NumForcedGC) + + fmt.Fprintf(w, `go_gomaxprocs %d`+"\n", runtime.GOMAXPROCS(0)) + fmt.Fprintf(w, `go_goroutines %d`+"\n", runtime.NumGoroutine()) + numThread, _ := runtime.ThreadCreateProfile(nil) + fmt.Fprintf(w, `go_threads %d`+"\n", numThread) + + // Export build details. + fmt.Fprintf(w, "go_info{version=%q} 1\n", runtime.Version()) + fmt.Fprintf(w, "go_info_ext{compiler=%q, GOARCH=%q, GOOS=%q, GOROOT=%q} 1\n", + runtime.Compiler, runtime.GOARCH, runtime.GOOS, runtime.GOROOT()) +} + +var startTime = time.Now() + +func registerMetric(name string, m metric) { + if err := validateMetric(name); err != nil { + panic(fmt.Errorf("BUG: invalid metric name %q: %s", name, err)) + } + metricsMapLock.Lock() + nm, ok := metricsMap[name] + if !ok { + nm = &namedMetric{ + name: name, + metric: m, + } + metricsMap[name] = nm + metricsList = append(metricsList, nm) + } + metricsMapLock.Unlock() + if ok { + panic(fmt.Errorf("BUG: metric %q is already registered", name)) + } +} diff --git a/vendor/github.com/VictoriaMetrics/metrics/summary.go b/vendor/github.com/VictoriaMetrics/metrics/summary.go new file mode 100644 index 000000000..e6179d817 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/summary.go @@ -0,0 +1,259 @@ +package metrics + +import ( + "fmt" + "io" + "math" + "sync" + "time" + + "github.com/valyala/histogram" +) + +const defaultSummaryWindow = 5 * time.Minute + +var defaultSummaryQuantiles = []float64{0.5, 0.9, 0.97, 0.99, 1} + +// Summary implements summary. +type Summary struct { + mu sync.Mutex + + curr *histogram.Fast + next *histogram.Fast + + quantiles []float64 + quantileValues []float64 + + window time.Duration +} + +// NewSummary creates and returns new summary with the given name. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned summary is safe to use from concurrent goroutines. +func NewSummary(name string) *Summary { + return NewSummaryExt(name, defaultSummaryWindow, defaultSummaryQuantiles) +} + +// NewSummaryExt creates and returns new summary with the given name, +// window and quantiles. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned summary is safe to use from concurrent goroutines. +func NewSummaryExt(name string, window time.Duration, quantiles []float64) *Summary { + s := newSummary(window, quantiles) + registerMetric(name, s) + registerSummary(s) + registerSummaryQuantiles(name, s) + return s +} + +func newSummary(window time.Duration, quantiles []float64) *Summary { + // Make a copy of quantiles in order to prevent from their modification by the caller. + quantiles = append([]float64{}, quantiles...) + validateQuantiles(quantiles) + s := &Summary{ + curr: histogram.NewFast(), + next: histogram.NewFast(), + quantiles: quantiles, + quantileValues: make([]float64, len(quantiles)), + window: window, + } + return s +} + +func registerSummaryQuantiles(name string, s *Summary) { + for i, q := range s.quantiles { + quantileValueName := addTag(name, fmt.Sprintf(`quantile="%g"`, q)) + qv := &quantileValue{ + s: s, + idx: i, + } + registerMetric(quantileValueName, qv) + } +} + +func validateQuantiles(quantiles []float64) { + for _, q := range quantiles { + if q < 0 || q > 1 { + panic(fmt.Errorf("BUG: quantile must be in the range [0..1]; got %v", q)) + } + } +} + +// Update updates the summary. +func (s *Summary) Update(v float64) { + s.mu.Lock() + s.curr.Update(v) + s.next.Update(v) + s.mu.Unlock() +} + +// UpdateDuration updates request duration based on the given startTime. +func (s *Summary) UpdateDuration(startTime time.Time) { + d := time.Since(startTime).Seconds() + s.Update(d) +} + +func (s *Summary) marshalTo(prefix string, w io.Writer) { + // Just update s.quantileValues and don't write anything to w. + // s.quantileValues will be marshaled later via quantileValue.marshalTo. + s.updateQuantiles() +} + +func (s *Summary) updateQuantiles() { + s.mu.Lock() + s.quantileValues = s.curr.Quantiles(s.quantileValues[:0], s.quantiles) + s.mu.Unlock() +} + +// GetOrCreateSummary returns registered summary with the given name +// or creates new summary if the registry doesn't contain summary with +// the given name. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned summary is safe to use from concurrent goroutines. +// +// Performance tip: prefer NewSummary instead of GetOrCreateSummary. +func GetOrCreateSummary(name string) *Summary { + return GetOrCreateSummaryExt(name, defaultSummaryWindow, defaultSummaryQuantiles) +} + +// GetOrCreateSummaryExt returns registered summary with the given name, +// window and quantiles or creates new summary if the registry doesn't +// contain summary with the given name. +// +// name must be valid Prometheus-compatible metric with possible lables. +// For instance, +// +// * foo +// * foo{bar="baz"} +// * foo{bar="baz",aaa="b"} +// +// The returned summary is safe to use from concurrent goroutines. +// +// Performance tip: prefer NewSummaryExt instead of GetOrCreateSummaryExt. +func GetOrCreateSummaryExt(name string, window time.Duration, quantiles []float64) *Summary { + metricsMapLock.Lock() + nm := metricsMap[name] + metricsMapLock.Unlock() + if nm == nil { + // Slow path - create and register missing summary. + if err := validateMetric(name); err != nil { + panic(fmt.Errorf("BUG: invalid metric name %q: %s", name, err)) + } + s := newSummary(window, quantiles) + nmNew := &namedMetric{ + name: name, + metric: s, + } + mustRegisterQuantiles := false + metricsMapLock.Lock() + nm = metricsMap[name] + if nm == nil { + nm = nmNew + metricsMap[name] = nm + metricsList = append(metricsList, nm) + registerSummary(s) + mustRegisterQuantiles = true + } + metricsMapLock.Unlock() + if mustRegisterQuantiles { + registerSummaryQuantiles(name, s) + } + } + s, ok := nm.metric.(*Summary) + if !ok { + panic(fmt.Errorf("BUG: metric %q isn't a Summary. It is %T", name, nm.metric)) + } + if s.window != window { + panic(fmt.Errorf("BUG: invalid window requested for the summary %q; requested %s; need %s", name, window, s.window)) + } + if !isEqualQuantiles(s.quantiles, quantiles) { + panic(fmt.Errorf("BUG: invalid quantiles requested from the summary %q; requested %v; need %v", name, quantiles, s.quantiles)) + } + return s +} + +func isEqualQuantiles(a, b []float64) bool { + // Do not use relfect.DeepEqual, since it is slower than the direct comparison. + if len(a) != len(b) { + return false + } + for i := range a { + if a[i] != b[i] { + return false + } + } + return true +} + +type quantileValue struct { + s *Summary + idx int +} + +func (qv *quantileValue) marshalTo(prefix string, w io.Writer) { + qv.s.mu.Lock() + v := qv.s.quantileValues[qv.idx] + qv.s.mu.Unlock() + if !math.IsNaN(v) { + fmt.Fprintf(w, "%s %g\n", prefix, v) + } +} + +func addTag(name, tag string) string { + if len(name) == 0 || name[len(name)-1] != '}' { + return fmt.Sprintf("%s{%s}", name, tag) + } + return fmt.Sprintf("%s,%s}", name[:len(name)-1], tag) +} + +func registerSummary(s *Summary) { + window := s.window + summariesLock.Lock() + summaries[window] = append(summaries[window], s) + if len(summaries[window]) == 1 { + go summariesSwapCron(window) + } + summariesLock.Unlock() +} + +func summariesSwapCron(window time.Duration) { + for { + time.Sleep(window / 2) + summariesLock.Lock() + for _, s := range summaries[window] { + s.mu.Lock() + tmp := s.curr + s.curr = s.next + s.next = tmp + s.next.Reset() + s.mu.Unlock() + } + summariesLock.Unlock() + } +} + +var ( + summaries = map[time.Duration][]*Summary{} + summariesLock sync.Mutex +) diff --git a/vendor/github.com/VictoriaMetrics/metrics/validator.go b/vendor/github.com/VictoriaMetrics/metrics/validator.go new file mode 100644 index 000000000..27e88ca33 --- /dev/null +++ b/vendor/github.com/VictoriaMetrics/metrics/validator.go @@ -0,0 +1,84 @@ +package metrics + +import ( + "fmt" + "regexp" + "strings" +) + +func validateMetric(s string) error { + if len(s) == 0 { + return fmt.Errorf("metric cannot be empty") + } + n := strings.IndexByte(s, '{') + if n < 0 { + return validateIdent(s) + } + ident := s[:n] + s = s[n+1:] + if err := validateIdent(ident); err != nil { + return err + } + if len(s) == 0 || s[len(s)-1] != '}' { + return fmt.Errorf("missing closing curly brace at the end of %q", ident) + } + return validateTags(s[:len(s)-1]) +} + +func validateTags(s string) error { + if len(s) == 0 { + return nil + } + for { + n := strings.IndexByte(s, '=') + if n < 0 { + return fmt.Errorf("missing `=` after %q", s) + } + ident := s[:n] + s = s[n+1:] + if err := validateIdent(ident); err != nil { + return err + } + if len(s) == 0 || s[0] != '"' { + return fmt.Errorf("missing starting `\"` for %q value; tail=%q", ident, s) + } + s = s[1:] + again: + n = strings.IndexByte(s, '"') + if n < 0 { + return fmt.Errorf("missing trailing `\"` for %q value; tail=%q", ident, s) + } + m := n + for m > 0 && s[m-1] == '\\' { + m-- + } + if (n-m)%2 == 1 { + s = s[n+1:] + goto again + } + s = s[n+1:] + if len(s) == 0 { + return nil + } + if !strings.HasPrefix(s, ",") { + return fmt.Errorf("missing `,` after %q value; tail=%q", ident, s) + } + s = skipSpace(s[1:]) + } +} + +func skipSpace(s string) string { + for len(s) > 0 && s[0] == ' ' { + s = s[1:] + } + return s +} + +func validateIdent(s string) error { + if !identRegexp.MatchString(s) { + return fmt.Errorf("invalid identifier %q", s) + } + return nil +} + +var identRegexp = regexp.MustCompile("^[a-zA-Z_:][a-zA-Z0-9_:]*$") diff --git a/vendor/github.com/cespare/xxhash/v2/.travis.yml b/vendor/github.com/cespare/xxhash/v2/.travis.yml new file mode 100644 index 000000000..c516ea88d --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/.travis.yml @@ -0,0 +1,8 @@ +language: go +go: + - "1.x" + - master +env: + - TAGS="" + - TAGS="-tags purego" +script: go test $TAGS -v ./... diff --git a/vendor/github.com/cespare/xxhash/v2/LICENSE.txt b/vendor/github.com/cespare/xxhash/v2/LICENSE.txt new file mode 100644 index 000000000..24b53065f --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2016 Caleb Spare + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/cespare/xxhash/v2/README.md b/vendor/github.com/cespare/xxhash/v2/README.md new file mode 100644 index 000000000..cbcc6ea5e --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/README.md @@ -0,0 +1,55 @@ +# xxhash + +[![GoDoc](https://godoc.org/github.com/cespare/xxhash?status.svg)](https://godoc.org/github.com/cespare/xxhash) +[![Build Status](https://travis-ci.org/cespare/xxhash.svg?branch=master)](https://travis-ci.org/cespare/xxhash) + +xxhash is a Go implementation of the 64-bit +[xxHash](http://cyan4973.github.io/xxHash/) algorithm, XXH64. This is a +high-quality hashing algorithm that is much faster than anything in the Go +standard library. + +This package provides a straightforward API: + +``` +func Sum64(b []byte) uint64 +func Sum64String(s string) uint64 +type Digest struct{ ... } + func New() *Digest +``` + +The `Digest` type implements hash.Hash64. Its key methods are: + +``` +func (*Digest) Write([]byte) (int, error) +func (*Digest) WriteString(string) (int, error) +func (*Digest) Sum64() uint64 +``` + +This implementation provides a fast pure-Go implementation and an even faster +assembly implementation for amd64. + +## Benchmarks + +Here are some quick benchmarks comparing the pure-Go and assembly +implementations of Sum64. + +| input size | purego | asm | +| --- | --- | --- | +| 5 B | 979.66 MB/s | 1291.17 MB/s | +| 100 B | 7475.26 MB/s | 7973.40 MB/s | +| 4 KB | 17573.46 MB/s | 17602.65 MB/s | +| 10 MB | 17131.46 MB/s | 17142.16 MB/s | + +These numbers were generated on Ubuntu 18.04 with an Intel i7-8700K CPU using +the following commands under Go 1.11.2: + +``` +$ go test -tags purego -benchtime 10s -bench '/xxhash,direct,bytes' +$ go test -benchtime 10s -bench '/xxhash,direct,bytes' +``` + +## Projects using this package + +- [InfluxDB](https://github.com/influxdata/influxdb) +- [Prometheus](https://github.com/prometheus/prometheus) +- [FreeCache](https://github.com/coocood/freecache) diff --git a/vendor/github.com/cespare/xxhash/v2/go.mod b/vendor/github.com/cespare/xxhash/v2/go.mod new file mode 100644 index 000000000..b83ab6ac3 --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/go.mod @@ -0,0 +1,7 @@ +module github.com/cespare/xxhash/v2 + +require ( + github.com/OneOfOne/xxhash v1.2.2 + github.com/cespare/xxhash v1.1.0 // indirect + github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 +) diff --git a/vendor/github.com/cespare/xxhash/v2/go.sum b/vendor/github.com/cespare/xxhash/v2/go.sum new file mode 100644 index 000000000..a7f183224 --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/go.sum @@ -0,0 +1,6 @@ +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash.go b/vendor/github.com/cespare/xxhash/v2/xxhash.go new file mode 100644 index 000000000..db0b35fbe --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/xxhash.go @@ -0,0 +1,236 @@ +// Package xxhash implements the 64-bit variant of xxHash (XXH64) as described +// at http://cyan4973.github.io/xxHash/. +package xxhash + +import ( + "encoding/binary" + "errors" + "math/bits" +) + +const ( + prime1 uint64 = 11400714785074694791 + prime2 uint64 = 14029467366897019727 + prime3 uint64 = 1609587929392839161 + prime4 uint64 = 9650029242287828579 + prime5 uint64 = 2870177450012600261 +) + +// NOTE(caleb): I'm using both consts and vars of the primes. Using consts where +// possible in the Go code is worth a small (but measurable) performance boost +// by avoiding some MOVQs. Vars are needed for the asm and also are useful for +// convenience in the Go code in a few places where we need to intentionally +// avoid constant arithmetic (e.g., v1 := prime1 + prime2 fails because the +// result overflows a uint64). +var ( + prime1v = prime1 + prime2v = prime2 + prime3v = prime3 + prime4v = prime4 + prime5v = prime5 +) + +// Digest implements hash.Hash64. +type Digest struct { + v1 uint64 + v2 uint64 + v3 uint64 + v4 uint64 + total uint64 + mem [32]byte + n int // how much of mem is used +} + +// New creates a new Digest that computes the 64-bit xxHash algorithm. +func New() *Digest { + var d Digest + d.Reset() + return &d +} + +// Reset clears the Digest's state so that it can be reused. +func (d *Digest) Reset() { + d.v1 = prime1v + prime2 + d.v2 = prime2 + d.v3 = 0 + d.v4 = -prime1v + d.total = 0 + d.n = 0 +} + +// Size always returns 8 bytes. +func (d *Digest) Size() int { return 8 } + +// BlockSize always returns 32 bytes. +func (d *Digest) BlockSize() int { return 32 } + +// Write adds more data to d. It always returns len(b), nil. +func (d *Digest) Write(b []byte) (n int, err error) { + n = len(b) + d.total += uint64(n) + + if d.n+n < 32 { + // This new data doesn't even fill the current block. + copy(d.mem[d.n:], b) + d.n += n + return + } + + if d.n > 0 { + // Finish off the partial block. + copy(d.mem[d.n:], b) + d.v1 = round(d.v1, u64(d.mem[0:8])) + d.v2 = round(d.v2, u64(d.mem[8:16])) + d.v3 = round(d.v3, u64(d.mem[16:24])) + d.v4 = round(d.v4, u64(d.mem[24:32])) + b = b[32-d.n:] + d.n = 0 + } + + if len(b) >= 32 { + // One or more full blocks left. + nw := writeBlocks(d, b) + b = b[nw:] + } + + // Store any remaining partial block. + copy(d.mem[:], b) + d.n = len(b) + + return +} + +// Sum appends the current hash to b and returns the resulting slice. +func (d *Digest) Sum(b []byte) []byte { + s := d.Sum64() + return append( + b, + byte(s>>56), + byte(s>>48), + byte(s>>40), + byte(s>>32), + byte(s>>24), + byte(s>>16), + byte(s>>8), + byte(s), + ) +} + +// Sum64 returns the current hash. +func (d *Digest) Sum64() uint64 { + var h uint64 + + if d.total >= 32 { + v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 + h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + h = mergeRound(h, v1) + h = mergeRound(h, v2) + h = mergeRound(h, v3) + h = mergeRound(h, v4) + } else { + h = d.v3 + prime5 + } + + h += d.total + + i, end := 0, d.n + for ; i+8 <= end; i += 8 { + k1 := round(0, u64(d.mem[i:i+8])) + h ^= k1 + h = rol27(h)*prime1 + prime4 + } + if i+4 <= end { + h ^= uint64(u32(d.mem[i:i+4])) * prime1 + h = rol23(h)*prime2 + prime3 + i += 4 + } + for i < end { + h ^= uint64(d.mem[i]) * prime5 + h = rol11(h) * prime1 + i++ + } + + h ^= h >> 33 + h *= prime2 + h ^= h >> 29 + h *= prime3 + h ^= h >> 32 + + return h +} + +const ( + magic = "xxh\x06" + marshaledSize = len(magic) + 8*5 + 32 +) + +// MarshalBinary implements the encoding.BinaryMarshaler interface. +func (d *Digest) MarshalBinary() ([]byte, error) { + b := make([]byte, 0, marshaledSize) + b = append(b, magic...) + b = appendUint64(b, d.v1) + b = appendUint64(b, d.v2) + b = appendUint64(b, d.v3) + b = appendUint64(b, d.v4) + b = appendUint64(b, d.total) + b = append(b, d.mem[:d.n]...) + b = b[:len(b)+len(d.mem)-d.n] + return b, nil +} + +// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. +func (d *Digest) UnmarshalBinary(b []byte) error { + if len(b) < len(magic) || string(b[:len(magic)]) != magic { + return errors.New("xxhash: invalid hash state identifier") + } + if len(b) != marshaledSize { + return errors.New("xxhash: invalid hash state size") + } + b = b[len(magic):] + b, d.v1 = consumeUint64(b) + b, d.v2 = consumeUint64(b) + b, d.v3 = consumeUint64(b) + b, d.v4 = consumeUint64(b) + b, d.total = consumeUint64(b) + copy(d.mem[:], b) + b = b[len(d.mem):] + d.n = int(d.total % uint64(len(d.mem))) + return nil +} + +func appendUint64(b []byte, x uint64) []byte { + var a [8]byte + binary.LittleEndian.PutUint64(a[:], x) + return append(b, a[:]...) +} + +func consumeUint64(b []byte) ([]byte, uint64) { + x := u64(b) + return b[8:], x +} + +func u64(b []byte) uint64 { return binary.LittleEndian.Uint64(b) } +func u32(b []byte) uint32 { return binary.LittleEndian.Uint32(b) } + +func round(acc, input uint64) uint64 { + acc += input * prime2 + acc = rol31(acc) + acc *= prime1 + return acc +} + +func mergeRound(acc, val uint64) uint64 { + val = round(0, val) + acc ^= val + acc = acc*prime1 + prime4 + return acc +} + +func rol1(x uint64) uint64 { return bits.RotateLeft64(x, 1) } +func rol7(x uint64) uint64 { return bits.RotateLeft64(x, 7) } +func rol11(x uint64) uint64 { return bits.RotateLeft64(x, 11) } +func rol12(x uint64) uint64 { return bits.RotateLeft64(x, 12) } +func rol18(x uint64) uint64 { return bits.RotateLeft64(x, 18) } +func rol23(x uint64) uint64 { return bits.RotateLeft64(x, 23) } +func rol27(x uint64) uint64 { return bits.RotateLeft64(x, 27) } +func rol31(x uint64) uint64 { return bits.RotateLeft64(x, 31) } diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go new file mode 100644 index 000000000..35318d7c4 --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go @@ -0,0 +1,13 @@ +// +build !appengine +// +build gc +// +build !purego + +package xxhash + +// Sum64 computes the 64-bit xxHash digest of b. +// +//go:noescape +func Sum64(b []byte) uint64 + +//go:noescape +func writeBlocks(*Digest, []byte) int diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s new file mode 100644 index 000000000..d580e32ae --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s @@ -0,0 +1,215 @@ +// +build !appengine +// +build gc +// +build !purego + +#include "textflag.h" + +// Register allocation: +// AX h +// CX pointer to advance through b +// DX n +// BX loop end +// R8 v1, k1 +// R9 v2 +// R10 v3 +// R11 v4 +// R12 tmp +// R13 prime1v +// R14 prime2v +// R15 prime4v + +// round reads from and advances the buffer pointer in CX. +// It assumes that R13 has prime1v and R14 has prime2v. +#define round(r) \ + MOVQ (CX), R12 \ + ADDQ $8, CX \ + IMULQ R14, R12 \ + ADDQ R12, r \ + ROLQ $31, r \ + IMULQ R13, r + +// mergeRound applies a merge round on the two registers acc and val. +// It assumes that R13 has prime1v, R14 has prime2v, and R15 has prime4v. +#define mergeRound(acc, val) \ + IMULQ R14, val \ + ROLQ $31, val \ + IMULQ R13, val \ + XORQ val, acc \ + IMULQ R13, acc \ + ADDQ R15, acc + +// func Sum64(b []byte) uint64 +TEXT ·Sum64(SB), NOSPLIT, $0-32 + // Load fixed primes. + MOVQ ·prime1v(SB), R13 + MOVQ ·prime2v(SB), R14 + MOVQ ·prime4v(SB), R15 + + // Load slice. + MOVQ b_base+0(FP), CX + MOVQ b_len+8(FP), DX + LEAQ (CX)(DX*1), BX + + // The first loop limit will be len(b)-32. + SUBQ $32, BX + + // Check whether we have at least one block. + CMPQ DX, $32 + JLT noBlocks + + // Set up initial state (v1, v2, v3, v4). + MOVQ R13, R8 + ADDQ R14, R8 + MOVQ R14, R9 + XORQ R10, R10 + XORQ R11, R11 + SUBQ R13, R11 + + // Loop until CX > BX. +blockLoop: + round(R8) + round(R9) + round(R10) + round(R11) + + CMPQ CX, BX + JLE blockLoop + + MOVQ R8, AX + ROLQ $1, AX + MOVQ R9, R12 + ROLQ $7, R12 + ADDQ R12, AX + MOVQ R10, R12 + ROLQ $12, R12 + ADDQ R12, AX + MOVQ R11, R12 + ROLQ $18, R12 + ADDQ R12, AX + + mergeRound(AX, R8) + mergeRound(AX, R9) + mergeRound(AX, R10) + mergeRound(AX, R11) + + JMP afterBlocks + +noBlocks: + MOVQ ·prime5v(SB), AX + +afterBlocks: + ADDQ DX, AX + + // Right now BX has len(b)-32, and we want to loop until CX > len(b)-8. + ADDQ $24, BX + + CMPQ CX, BX + JG fourByte + +wordLoop: + // Calculate k1. + MOVQ (CX), R8 + ADDQ $8, CX + IMULQ R14, R8 + ROLQ $31, R8 + IMULQ R13, R8 + + XORQ R8, AX + ROLQ $27, AX + IMULQ R13, AX + ADDQ R15, AX + + CMPQ CX, BX + JLE wordLoop + +fourByte: + ADDQ $4, BX + CMPQ CX, BX + JG singles + + MOVL (CX), R8 + ADDQ $4, CX + IMULQ R13, R8 + XORQ R8, AX + + ROLQ $23, AX + IMULQ R14, AX + ADDQ ·prime3v(SB), AX + +singles: + ADDQ $4, BX + CMPQ CX, BX + JGE finalize + +singlesLoop: + MOVBQZX (CX), R12 + ADDQ $1, CX + IMULQ ·prime5v(SB), R12 + XORQ R12, AX + + ROLQ $11, AX + IMULQ R13, AX + + CMPQ CX, BX + JL singlesLoop + +finalize: + MOVQ AX, R12 + SHRQ $33, R12 + XORQ R12, AX + IMULQ R14, AX + MOVQ AX, R12 + SHRQ $29, R12 + XORQ R12, AX + IMULQ ·prime3v(SB), AX + MOVQ AX, R12 + SHRQ $32, R12 + XORQ R12, AX + + MOVQ AX, ret+24(FP) + RET + +// writeBlocks uses the same registers as above except that it uses AX to store +// the d pointer. + +// func writeBlocks(d *Digest, b []byte) int +TEXT ·writeBlocks(SB), NOSPLIT, $0-40 + // Load fixed primes needed for round. + MOVQ ·prime1v(SB), R13 + MOVQ ·prime2v(SB), R14 + + // Load slice. + MOVQ b_base+8(FP), CX + MOVQ b_len+16(FP), DX + LEAQ (CX)(DX*1), BX + SUBQ $32, BX + + // Load vN from d. + MOVQ d+0(FP), AX + MOVQ 0(AX), R8 // v1 + MOVQ 8(AX), R9 // v2 + MOVQ 16(AX), R10 // v3 + MOVQ 24(AX), R11 // v4 + + // We don't need to check the loop condition here; this function is + // always called with at least one block of data to process. +blockLoop: + round(R8) + round(R9) + round(R10) + round(R11) + + CMPQ CX, BX + JLE blockLoop + + // Copy vN back to d. + MOVQ R8, 0(AX) + MOVQ R9, 8(AX) + MOVQ R10, 16(AX) + MOVQ R11, 24(AX) + + // The number of bytes written is CX minus the old base pointer. + SUBQ b_base+8(FP), CX + MOVQ CX, ret+32(FP) + + RET diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_other.go b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go new file mode 100644 index 000000000..4a5a82160 --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go @@ -0,0 +1,76 @@ +// +build !amd64 appengine !gc purego + +package xxhash + +// Sum64 computes the 64-bit xxHash digest of b. +func Sum64(b []byte) uint64 { + // A simpler version would be + // d := New() + // d.Write(b) + // return d.Sum64() + // but this is faster, particularly for small inputs. + + n := len(b) + var h uint64 + + if n >= 32 { + v1 := prime1v + prime2 + v2 := prime2 + v3 := uint64(0) + v4 := -prime1v + for len(b) >= 32 { + v1 = round(v1, u64(b[0:8:len(b)])) + v2 = round(v2, u64(b[8:16:len(b)])) + v3 = round(v3, u64(b[16:24:len(b)])) + v4 = round(v4, u64(b[24:32:len(b)])) + b = b[32:len(b):len(b)] + } + h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) + h = mergeRound(h, v1) + h = mergeRound(h, v2) + h = mergeRound(h, v3) + h = mergeRound(h, v4) + } else { + h = prime5 + } + + h += uint64(n) + + i, end := 0, len(b) + for ; i+8 <= end; i += 8 { + k1 := round(0, u64(b[i:i+8:len(b)])) + h ^= k1 + h = rol27(h)*prime1 + prime4 + } + if i+4 <= end { + h ^= uint64(u32(b[i:i+4:len(b)])) * prime1 + h = rol23(h)*prime2 + prime3 + i += 4 + } + for ; i < end; i++ { + h ^= uint64(b[i]) * prime5 + h = rol11(h) * prime1 + } + + h ^= h >> 33 + h *= prime2 + h ^= h >> 29 + h *= prime3 + h ^= h >> 32 + + return h +} + +func writeBlocks(d *Digest, b []byte) int { + v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 + n := len(b) + for len(b) >= 32 { + v1 = round(v1, u64(b[0:8:len(b)])) + v2 = round(v2, u64(b[8:16:len(b)])) + v3 = round(v3, u64(b[16:24:len(b)])) + v4 = round(v4, u64(b[24:32:len(b)])) + b = b[32:len(b):len(b)] + } + d.v1, d.v2, d.v3, d.v4 = v1, v2, v3, v4 + return n - len(b) +} diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go new file mode 100644 index 000000000..fc9bea7a3 --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go @@ -0,0 +1,15 @@ +// +build appengine + +// This file contains the safe implementations of otherwise unsafe-using code. + +package xxhash + +// Sum64String computes the 64-bit xxHash digest of s. +func Sum64String(s string) uint64 { + return Sum64([]byte(s)) +} + +// WriteString adds more data to d. It always returns len(s), nil. +func (d *Digest) WriteString(s string) (n int, err error) { + return d.Write([]byte(s)) +} diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go new file mode 100644 index 000000000..53bf76efb --- /dev/null +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go @@ -0,0 +1,46 @@ +// +build !appengine + +// This file encapsulates usage of unsafe. +// xxhash_safe.go contains the safe implementations. + +package xxhash + +import ( + "reflect" + "unsafe" +) + +// Notes: +// +// See https://groups.google.com/d/msg/golang-nuts/dcjzJy-bSpw/tcZYBzQqAQAJ +// for some discussion about these unsafe conversions. +// +// In the future it's possible that compiler optimizations will make these +// unsafe operations unnecessary: https://golang.org/issue/2205. +// +// Both of these wrapper functions still incur function call overhead since they +// will not be inlined. We could write Go/asm copies of Sum64 and Digest.Write +// for strings to squeeze out a bit more speed. Mid-stack inlining should +// eventually fix this. + +// Sum64String computes the 64-bit xxHash digest of s. +// It may be faster than Sum64([]byte(s)) by avoiding a copy. +func Sum64String(s string) uint64 { + var b []byte + bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) + bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data + bh.Len = len(s) + bh.Cap = len(s) + return Sum64(b) +} + +// WriteString adds more data to d. It always returns len(s), nil. +// It may be faster than Write([]byte(s)) by avoiding a copy. +func (d *Digest) WriteString(s string) (n int, err error) { + var b []byte + bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) + bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data + bh.Len = len(s) + bh.Cap = len(s) + return d.Write(b) +} diff --git a/vendor/github.com/golang/snappy/.gitignore b/vendor/github.com/golang/snappy/.gitignore new file mode 100644 index 000000000..042091d9b --- /dev/null +++ b/vendor/github.com/golang/snappy/.gitignore @@ -0,0 +1,16 @@ +cmd/snappytool/snappytool +testdata/bench + +# These explicitly listed benchmark data files are for an obsolete version of +# snappy_test.go. +testdata/alice29.txt +testdata/asyoulik.txt +testdata/fireworks.jpeg +testdata/geo.protodata +testdata/html +testdata/html_x_4 +testdata/kppkn.gtb +testdata/lcet10.txt +testdata/paper-100k.pdf +testdata/plrabn12.txt +testdata/urls.10K diff --git a/vendor/github.com/golang/snappy/AUTHORS b/vendor/github.com/golang/snappy/AUTHORS new file mode 100644 index 000000000..bcfa19520 --- /dev/null +++ b/vendor/github.com/golang/snappy/AUTHORS @@ -0,0 +1,15 @@ +# This is the official list of Snappy-Go authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. + +# Please keep the list sorted. + +Damian Gryski +Google Inc. +Jan Mercl <0xjnml@gmail.com> +Rodolfo Carvalho +Sebastien Binet diff --git a/vendor/github.com/golang/snappy/CONTRIBUTORS b/vendor/github.com/golang/snappy/CONTRIBUTORS new file mode 100644 index 000000000..931ae3160 --- /dev/null +++ b/vendor/github.com/golang/snappy/CONTRIBUTORS @@ -0,0 +1,37 @@ +# This is the official list of people who can contribute +# (and typically have contributed) code to the Snappy-Go repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# The submission process automatically checks to make sure +# that people submitting code are listed in this file (by email address). +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# http://code.google.com/legal/individual-cla-v1.0.html +# http://code.google.com/legal/corporate-cla-v1.0.html +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. + +# Names should be added to this file like so: +# Name + +# Please keep the list sorted. + +Damian Gryski +Jan Mercl <0xjnml@gmail.com> +Kai Backman +Marc-Antoine Ruel +Nigel Tao +Rob Pike +Rodolfo Carvalho +Russ Cox +Sebastien Binet diff --git a/vendor/github.com/golang/snappy/LICENSE b/vendor/github.com/golang/snappy/LICENSE new file mode 100644 index 000000000..6050c10f4 --- /dev/null +++ b/vendor/github.com/golang/snappy/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/golang/snappy/README b/vendor/github.com/golang/snappy/README new file mode 100644 index 000000000..cea12879a --- /dev/null +++ b/vendor/github.com/golang/snappy/README @@ -0,0 +1,107 @@ +The Snappy compression format in the Go programming language. + +To download and install from source: +$ go get github.com/golang/snappy + +Unless otherwise noted, the Snappy-Go source files are distributed +under the BSD-style license found in the LICENSE file. + + + +Benchmarks. + +The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten +or so files, the same set used by the C++ Snappy code (github.com/google/snappy +and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @ +3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29: + +"go test -test.bench=." + +_UFlat0-8 2.19GB/s ± 0% html +_UFlat1-8 1.41GB/s ± 0% urls +_UFlat2-8 23.5GB/s ± 2% jpg +_UFlat3-8 1.91GB/s ± 0% jpg_200 +_UFlat4-8 14.0GB/s ± 1% pdf +_UFlat5-8 1.97GB/s ± 0% html4 +_UFlat6-8 814MB/s ± 0% txt1 +_UFlat7-8 785MB/s ± 0% txt2 +_UFlat8-8 857MB/s ± 0% txt3 +_UFlat9-8 719MB/s ± 1% txt4 +_UFlat10-8 2.84GB/s ± 0% pb +_UFlat11-8 1.05GB/s ± 0% gaviota + +_ZFlat0-8 1.04GB/s ± 0% html +_ZFlat1-8 534MB/s ± 0% urls +_ZFlat2-8 15.7GB/s ± 1% jpg +_ZFlat3-8 740MB/s ± 3% jpg_200 +_ZFlat4-8 9.20GB/s ± 1% pdf +_ZFlat5-8 991MB/s ± 0% html4 +_ZFlat6-8 379MB/s ± 0% txt1 +_ZFlat7-8 352MB/s ± 0% txt2 +_ZFlat8-8 396MB/s ± 1% txt3 +_ZFlat9-8 327MB/s ± 1% txt4 +_ZFlat10-8 1.33GB/s ± 1% pb +_ZFlat11-8 605MB/s ± 1% gaviota + + + +"go test -test.bench=. -tags=noasm" + +_UFlat0-8 621MB/s ± 2% html +_UFlat1-8 494MB/s ± 1% urls +_UFlat2-8 23.2GB/s ± 1% jpg +_UFlat3-8 1.12GB/s ± 1% jpg_200 +_UFlat4-8 4.35GB/s ± 1% pdf +_UFlat5-8 609MB/s ± 0% html4 +_UFlat6-8 296MB/s ± 0% txt1 +_UFlat7-8 288MB/s ± 0% txt2 +_UFlat8-8 309MB/s ± 1% txt3 +_UFlat9-8 280MB/s ± 1% txt4 +_UFlat10-8 753MB/s ± 0% pb +_UFlat11-8 400MB/s ± 0% gaviota + +_ZFlat0-8 409MB/s ± 1% html +_ZFlat1-8 250MB/s ± 1% urls +_ZFlat2-8 12.3GB/s ± 1% jpg +_ZFlat3-8 132MB/s ± 0% jpg_200 +_ZFlat4-8 2.92GB/s ± 0% pdf +_ZFlat5-8 405MB/s ± 1% html4 +_ZFlat6-8 179MB/s ± 1% txt1 +_ZFlat7-8 170MB/s ± 1% txt2 +_ZFlat8-8 189MB/s ± 1% txt3 +_ZFlat9-8 164MB/s ± 1% txt4 +_ZFlat10-8 479MB/s ± 1% pb +_ZFlat11-8 270MB/s ± 1% gaviota + + + +For comparison (Go's encoded output is byte-for-byte identical to C++'s), here +are the numbers from C++ Snappy's + +make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log + +BM_UFlat/0 2.4GB/s html +BM_UFlat/1 1.4GB/s urls +BM_UFlat/2 21.8GB/s jpg +BM_UFlat/3 1.5GB/s jpg_200 +BM_UFlat/4 13.3GB/s pdf +BM_UFlat/5 2.1GB/s html4 +BM_UFlat/6 1.0GB/s txt1 +BM_UFlat/7 959.4MB/s txt2 +BM_UFlat/8 1.0GB/s txt3 +BM_UFlat/9 864.5MB/s txt4 +BM_UFlat/10 2.9GB/s pb +BM_UFlat/11 1.2GB/s gaviota + +BM_ZFlat/0 944.3MB/s html (22.31 %) +BM_ZFlat/1 501.6MB/s urls (47.78 %) +BM_ZFlat/2 14.3GB/s jpg (99.95 %) +BM_ZFlat/3 538.3MB/s jpg_200 (73.00 %) +BM_ZFlat/4 8.3GB/s pdf (83.30 %) +BM_ZFlat/5 903.5MB/s html4 (22.52 %) +BM_ZFlat/6 336.0MB/s txt1 (57.88 %) +BM_ZFlat/7 312.3MB/s txt2 (61.91 %) +BM_ZFlat/8 353.1MB/s txt3 (54.99 %) +BM_ZFlat/9 289.9MB/s txt4 (66.26 %) +BM_ZFlat/10 1.2GB/s pb (19.68 %) +BM_ZFlat/11 527.4MB/s gaviota (37.72 %) diff --git a/vendor/github.com/golang/snappy/decode.go b/vendor/github.com/golang/snappy/decode.go new file mode 100644 index 000000000..72efb0353 --- /dev/null +++ b/vendor/github.com/golang/snappy/decode.go @@ -0,0 +1,237 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + for { + if r.i < r.j { + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil + } + if !r.readFull(r.buf[:4], true) { + return 0, r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return 0, r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return 0, r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return 0, r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return 0, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return 0, r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return 0, r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return 0, r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return 0, r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return 0, r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return 0, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return 0, r.err + } + if !r.readFull(r.decoded[:n], false) { + return 0, r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return 0, r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return 0, r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return 0, r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return 0, r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return 0, r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return 0, r.err + } + } +} diff --git a/vendor/github.com/golang/snappy/decode_amd64.go b/vendor/github.com/golang/snappy/decode_amd64.go new file mode 100644 index 000000000..fcd192b84 --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_amd64.go @@ -0,0 +1,14 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +package snappy + +// decode has the same semantics as in decode_other.go. +// +//go:noescape +func decode(dst, src []byte) int diff --git a/vendor/github.com/golang/snappy/decode_amd64.s b/vendor/github.com/golang/snappy/decode_amd64.s new file mode 100644 index 000000000..e6179f65e --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_amd64.s @@ -0,0 +1,490 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - AX scratch +// - BX scratch +// - CX length or x +// - DX offset +// - SI &src[s] +// - DI &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly DI - R8, and len(dst)-d is R10 - DI. +// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI. +TEXT ·decode(SB), NOSPLIT, $48-56 + // Initialize SI, DI and R8-R13. + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, DI + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, SI + MOVQ R11, R13 + ADDQ R12, R13 + +loop: + // for s < len(src) + CMPQ SI, R13 + JEQ end + + // CX = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBLZX (SI), CX + MOVL CX, BX + ANDL $3, BX + CMPL BX, $1 + JAE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + SHRL $2, CX + CMPL CX, $60 + JAE tagLit60Plus + + // case x < 60: + // s++ + INCQ SI + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that CX == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // CX can hold 64 bits, so the increment cannot overflow. + INCQ CX + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // AX = len(dst) - d + // BX = len(src) - s + MOVQ R10, AX + SUBQ DI, AX + MOVQ R13, BX + SUBQ SI, BX + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMPQ CX, $16 + JGT callMemmove + CMPQ AX, $16 + JLT callMemmove + CMPQ BX, $16 + JLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(SI), X0 + MOVOU X0, 0(DI) + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMPQ CX, AX + JGT errCorrupt + CMPQ CX, BX + JGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // DI, SI and CX as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, R13 + ADDQ R12, R13 + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADDQ CX, SI + SUBQ $58, SI + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // case x == 60: + CMPL CX, $61 + JEQ tagLit61 + JA tagLit62Plus + + // x = uint32(src[s-1]) + MOVBLZX -1(SI), CX + JMP doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVWLZX -2(SI), CX + JMP doLit + +tagLit62Plus: + CMPL CX, $62 + JA tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVWLZX -3(SI), CX + MOVBLZX -1(SI), BX + SHLL $16, BX + ORL BX, CX + JMP doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVL -4(SI), CX + JMP doLit + +// The code above handles literal tags. +// ---------------------------------------- +// The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADDQ $5, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-5])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVLQZX -4(SI), DX + JMP doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADDQ $3, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-3])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVWQZX -2(SI), DX + JMP doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - BX == src[s] & 0x03 + // - CX == src[s] + CMPQ BX, $2 + JEQ tagCopy2 + JA tagCopy4 + + // case tagCopy1: + // s += 2 + ADDQ $2, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVQ CX, DX + ANDQ $0xe0, DX + SHLQ $3, DX + MOVBQZX -1(SI), BX + ORQ BX, DX + + // length = 4 + int(src[s-2])>>2&0x7 + SHRQ $2, CX + ANDQ $7, CX + ADDQ $4, CX + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - CX == length && CX > 0 + // - DX == offset + + // if offset <= 0 { etc } + CMPQ DX, $0 + JLE errCorrupt + + // if d < offset { etc } + MOVQ DI, BX + SUBQ R8, BX + CMPQ BX, DX + JLT errCorrupt + + // if length > len(dst)-d { etc } + MOVQ R10, BX + SUBQ DI, BX + CMPQ CX, BX + JGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVQ R10, R14 + SUBQ DI, R14 + MOVQ DI, R15 + SUBQ DX, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMPQ CX, $16 + JGT slowForwardCopy + CMPQ DX, $8 + JLT slowForwardCopy + CMPQ R14, $16 + JLT slowForwardCopy + MOVQ 0(R15), AX + MOVQ AX, 0(DI) + MOVQ 8(R15), BX + MOVQ BX, 8(DI) + ADDQ CX, DI + JMP loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUBQ $10, R14 + CMPQ CX, R14 + JGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMPQ DX, $8 + JGE fixUpSlowForwardCopy + MOVQ (R15), BX + MOVQ BX, (DI) + SUBQ DX, CX + ADDQ DX, DI + ADDQ DX, DX + JMP makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by DI being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save DI to AX so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVQ DI, AX + ADDQ CX, DI + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + CMPQ CX, $0 + JLE loop + MOVQ (R15), BX + MOVQ BX, (AX) + ADDQ $8, R15 + ADDQ $8, AX + SUBQ $8, CX + JMP finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), BX + MOVB BX, (DI) + INCQ R15 + INCQ DI + DECQ CX + JNZ verySlowForwardCopy + JMP loop + +// The code above handles copy tags. +// ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMPQ DI, R10 + JNE errCorrupt + + // return 0 + MOVQ $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVQ $1, ret+48(FP) + RET diff --git a/vendor/github.com/golang/snappy/decode_other.go b/vendor/github.com/golang/snappy/decode_other.go new file mode 100644 index 000000000..8c9f2049b --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_other.go @@ -0,0 +1,101 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine !gc noasm + +package snappy + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. Unlike + // the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + for end := d + length; d != end; d++ { + dst[d] = dst[d-offset] + } + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/vendor/github.com/golang/snappy/encode.go b/vendor/github.com/golang/snappy/encode.go new file mode 100644 index 000000000..8d393e904 --- /dev/null +++ b/vendor/github.com/golang/snappy/encode.go @@ -0,0 +1,285 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer that can write Snappy-compressed bytes. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/vendor/github.com/golang/snappy/encode_amd64.go b/vendor/github.com/golang/snappy/encode_amd64.go new file mode 100644 index 000000000..150d91bc8 --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_amd64.go @@ -0,0 +1,29 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +package snappy + +// emitLiteral has the same semantics as in encode_other.go. +// +//go:noescape +func emitLiteral(dst, lit []byte) int + +// emitCopy has the same semantics as in encode_other.go. +// +//go:noescape +func emitCopy(dst []byte, offset, length int) int + +// extendMatch has the same semantics as in encode_other.go. +// +//go:noescape +func extendMatch(src []byte, i, j int) int + +// encodeBlock has the same semantics as in encode_other.go. +// +//go:noescape +func encodeBlock(dst, src []byte) (d int) diff --git a/vendor/github.com/golang/snappy/encode_amd64.s b/vendor/github.com/golang/snappy/encode_amd64.s new file mode 100644 index 000000000..adfd979fe --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_amd64.s @@ -0,0 +1,730 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a +// Go toolchain regression. See https://github.com/golang/go/issues/15426 and +// https://github.com/golang/snappy/issues/29 +// +// As a workaround, the package was built with a known good assembler, and +// those instructions were disassembled by "objdump -d" to yield the +// 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 +// style comments, in AT&T asm syntax. Note that rsp here is a physical +// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm). +// The instructions were then encoded as "BYTE $0x.." sequences, which assemble +// fine on Go 1.6. + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - AX len(lit) +// - BX n +// - DX return value +// - DI &dst[i] +// - R10 &lit[0] +// +// The 24 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $24-56 + MOVQ dst_base+0(FP), DI + MOVQ lit_base+24(FP), R10 + MOVQ lit_len+32(FP), AX + MOVQ AX, DX + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT oneByte + CMPL BX, $256 + JLT twoBytes + +threeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + ADDQ $3, DX + JMP memmove + +twoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + ADDQ $2, DX + JMP memmove + +oneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + ADDQ $1, DX + +memmove: + MOVQ DX, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - AX length +// - SI &dst[0] +// - DI &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVQ dst_base+0(FP), DI + MOVQ DI, SI + MOVQ offset+24(FP), R11 + MOVQ length+32(FP), AX + +loop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP loop0 + +step1: + // if length > 64 { etc } + CMPL AX, $64 + JLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMPL AX, $12 + JGE step3 + CMPL R11, $2048 + JGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - DX &src[0] +// - SI &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVQ src_base+0(FP), DX + MOVQ src_len+8(FP), R14 + MOVQ i+24(FP), R15 + MOVQ j+32(FP), SI + ADDQ DX, R14 + ADDQ DX, R15 + ADDQ DX, SI + MOVQ R14, R13 + SUBQ $8, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA cmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE bsf + ADDQ $8, R15 + ADDQ $8, SI + JMP cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE extendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE extendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - AX . . +// - BX . . +// - CX 56 shift (note that amd64 shifts by non-immediates must use CX). +// - DX 64 &src[0], tableSize +// - SI 72 &src[s] +// - DI 80 &dst[d] +// - R9 88 sLimit +// - R10 . &src[nextEmit] +// - R11 96 prevHash, currHash, nextHash, offset +// - R12 104 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 112 candidate +// +// The second column (56, 64, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 56 + 64 = 32888. +TEXT ·encodeBlock(SB), 0, $32888-56 + MOVQ dst_base+0(FP), DI + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVQ $24, CX + MOVQ $256, DX + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + CMPQ DX, $16384 + JGE varTable + CMPQ DX, R14 + JGE varTable + SUBQ $1, CX + SHLQ $1, DX + JMP calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each MOVOU + // writes 16 bytes, so we can do only tableSize/8 writes instead of the + // 2048 writes that would zero-initialize all of table's 32768 bytes. + SHRQ $3, DX + LEAQ table-32768(SP), BX + PXOR X0, X0 + +memclr: + MOVOU X0, 0(BX) + ADDQ $16, BX + SUBQ $1, DX + JNZ memclr + + // !!! DX = &src[0] + MOVQ SI, DX + + // sLimit := len(src) - inputMargin + MOVQ R14, R9 + SUBQ $15, R9 + + // !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't + // change for the rest of the function. + MOVQ CX, 56(SP) + MOVQ DX, 64(SP) + MOVQ R9, 88(SP) + + // nextEmit := 0 + MOVQ DX, R10 + + // s := 1 + ADDQ $1, SI + + // nextHash := hash(load32(src, s), shift) + MOVL 0(SI), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + +outer: + // for { etc } + + // skip := 32 + MOVQ $32, R12 + + // nextS := s + MOVQ SI, R13 + + // candidate := 0 + MOVQ $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVQ R13, SI + + // bytesBetweenHashLookups := skip >> 5 + MOVQ R12, R14 + SHRQ $5, R14 + + // nextS = s + bytesBetweenHashLookups + ADDQ R14, R13 + + // skip += bytesBetweenHashLookups + ADDQ R14, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVQ R13, AX + SUBQ DX, AX + CMPQ AX, R9 + JA emitRemainder + + // candidate = int(table[nextHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[nextHash] = uint16(s) + MOVQ SI, AX + SUBQ DX, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // nextHash = hash(load32(src, nextS), shift) + MOVL 0(R13), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVL 0(SI), AX + MOVL (DX)(R15*1), BX + CMPL AX, BX + JNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVQ SI, AX + SUBQ R10, AX + CMPQ AX, $16 + JLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT inlineEmitLiteralOneByte + CMPL BX, $256 + JLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + ADDQ AX, DI // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVQ SI, 72(SP) + MOVQ DI, 80(SP) + MOVQ R15, 112(SP) + CALL runtime·memmove(SB) + MOVQ 56(SP), CX + MOVQ 64(SP), DX + MOVQ 72(SP), SI + MOVQ 80(SP), DI + MOVQ 88(SP), R9 + MOVQ 112(SP), R15 + JMP inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB AX, BX + SUBB $1, BX + SHLB $2, BX + MOVB BX, (DI) + ADDQ $1, DI + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(R10), X0 + MOVOU X0, 0(DI) + ADDQ AX, DI + +inner1: + // for { etc } + + // base := s + MOVQ SI, R12 + + // !!! offset := base - candidate + MOVQ R12, R11 + SUBQ R15, R11 + SUBQ DX, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVQ src_len+32(FP), R14 + ADDQ DX, R14 + + // !!! R13 = &src[len(src) - 8] + MOVQ R14, R13 + SUBQ $8, R13 + + // !!! R15 = &src[candidate + 4] + ADDQ $4, R15 + ADDQ DX, R15 + + // !!! s += 4 + ADDQ $4, SI + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA inlineExtendMatchCmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE inlineExtendMatchBSF + ADDQ $8, R15 + ADDQ $8, SI + JMP inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + JMP inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE inlineExtendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE inlineExtendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVQ SI, AX + SUBQ R12, AX + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + CMPL AX, $64 + JLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + CMPL AX, $12 + JGE inlineEmitCopyStep3 + CMPL R11, $2048 + JGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + JMP inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVQ SI, R10 + + // if s >= sLimit { goto emitRemainder } + MOVQ SI, AX + SUBQ DX, AX + CMPQ AX, R9 + JAE emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVQ -1(SI), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // table[prevHash] = uint16(s-1) + MOVQ SI, AX + SUBQ DX, AX + SUBQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // currHash := hash(uint32(x>>8), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // candidate = int(table[currHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[currHash] = uint16(s) + ADDQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVL (DX)(R15*1), BX + CMPL R14, BX + JEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // s++ + ADDQ $1, SI + + // break out of the inner1 for loop, i.e. continue the outer loop. + JMP outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVQ src_len+32(FP), AX + ADDQ DX, AX + CMPQ R10, AX + JEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVQ DI, 0(SP) + MOVQ $0, 8(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ $0, 16(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ R10, 24(SP) + SUBQ R10, AX + MOVQ AX, 32(SP) + MOVQ AX, 40(SP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVQ DI, 80(SP) + CALL ·emitLiteral(SB) + MOVQ 80(SP), DI + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADDQ 48(SP), DI + +encodeBlockEnd: + MOVQ dst_base+0(FP), AX + SUBQ AX, DI + MOVQ DI, d+48(FP) + RET diff --git a/vendor/github.com/golang/snappy/encode_other.go b/vendor/github.com/golang/snappy/encode_other.go new file mode 100644 index 000000000..dbcae905e --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_other.go @@ -0,0 +1,238 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine !gc noasm + +package snappy + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +// extendMatch returns the largest k such that k <= len(src) and that +// src[i:i+k-j] and src[j:k] have the same contents. +// +// It assumes that: +// 0 <= i && i < j && j <= len(src) +func extendMatch(src []byte, i, j int) int { + for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 { + } + return j +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/vendor/github.com/golang/snappy/go.mod b/vendor/github.com/golang/snappy/go.mod new file mode 100644 index 000000000..f6406bb2c --- /dev/null +++ b/vendor/github.com/golang/snappy/go.mod @@ -0,0 +1 @@ +module github.com/golang/snappy diff --git a/vendor/github.com/golang/snappy/snappy.go b/vendor/github.com/golang/snappy/snappy.go new file mode 100644 index 000000000..ece692ea4 --- /dev/null +++ b/vendor/github.com/golang/snappy/snappy.go @@ -0,0 +1,98 @@ +// Copyright 2011 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package snappy implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. +// +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. +package snappy // import "github.com/golang/snappy" + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/vendor/github.com/valyala/bytebufferpool/.travis.yml b/vendor/github.com/valyala/bytebufferpool/.travis.yml new file mode 100644 index 000000000..6a6ec2eb0 --- /dev/null +++ b/vendor/github.com/valyala/bytebufferpool/.travis.yml @@ -0,0 +1,15 @@ +language: go + +go: + - 1.6 + +script: + # build test for supported platforms + - GOOS=linux go build + - GOOS=darwin go build + - GOOS=freebsd go build + - GOOS=windows go build + - GOARCH=386 go build + + # run tests on a standard platform + - go test -v ./... diff --git a/vendor/github.com/valyala/bytebufferpool/LICENSE b/vendor/github.com/valyala/bytebufferpool/LICENSE new file mode 100644 index 000000000..f7c935c20 --- /dev/null +++ b/vendor/github.com/valyala/bytebufferpool/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 Aliaksandr Valialkin, VertaMedia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/valyala/bytebufferpool/README.md b/vendor/github.com/valyala/bytebufferpool/README.md new file mode 100644 index 000000000..061357e83 --- /dev/null +++ b/vendor/github.com/valyala/bytebufferpool/README.md @@ -0,0 +1,21 @@ +[![Build Status](https://travis-ci.org/valyala/bytebufferpool.svg)](https://travis-ci.org/valyala/bytebufferpool) +[![GoDoc](https://godoc.org/github.com/valyala/bytebufferpool?status.svg)](http://godoc.org/github.com/valyala/bytebufferpool) +[![Go Report](http://goreportcard.com/badge/valyala/bytebufferpool)](http://goreportcard.com/report/valyala/bytebufferpool) + +# bytebufferpool + +An implementation of a pool of byte buffers with anti-memory-waste protection. + +The pool may waste limited amount of memory due to fragmentation. +This amount equals to the maximum total size of the byte buffers +in concurrent use. + +# Benchmark results +Currently bytebufferpool is fastest and most effective buffer pool written in Go. + +You can find results [here](https://omgnull.github.io/go-benchmark/buffer/). + +# bytebufferpool users + +* [fasthttp](https://github.com/valyala/fasthttp) +* [quicktemplate](https://github.com/valyala/quicktemplate) diff --git a/vendor/github.com/valyala/bytebufferpool/bytebuffer.go b/vendor/github.com/valyala/bytebufferpool/bytebuffer.go new file mode 100644 index 000000000..07a055a2d --- /dev/null +++ b/vendor/github.com/valyala/bytebufferpool/bytebuffer.go @@ -0,0 +1,111 @@ +package bytebufferpool + +import "io" + +// ByteBuffer provides byte buffer, which can be used for minimizing +// memory allocations. +// +// ByteBuffer may be used with functions appending data to the given []byte +// slice. See example code for details. +// +// Use Get for obtaining an empty byte buffer. +type ByteBuffer struct { + + // B is a byte buffer to use in append-like workloads. + // See example code for details. + B []byte +} + +// Len returns the size of the byte buffer. +func (b *ByteBuffer) Len() int { + return len(b.B) +} + +// ReadFrom implements io.ReaderFrom. +// +// The function appends all the data read from r to b. +func (b *ByteBuffer) ReadFrom(r io.Reader) (int64, error) { + p := b.B + nStart := int64(len(p)) + nMax := int64(cap(p)) + n := nStart + if nMax == 0 { + nMax = 64 + p = make([]byte, nMax) + } else { + p = p[:nMax] + } + for { + if n == nMax { + nMax *= 2 + bNew := make([]byte, nMax) + copy(bNew, p) + p = bNew + } + nn, err := r.Read(p[n:]) + n += int64(nn) + if err != nil { + b.B = p[:n] + n -= nStart + if err == io.EOF { + return n, nil + } + return n, err + } + } +} + +// WriteTo implements io.WriterTo. +func (b *ByteBuffer) WriteTo(w io.Writer) (int64, error) { + n, err := w.Write(b.B) + return int64(n), err +} + +// Bytes returns b.B, i.e. all the bytes accumulated in the buffer. +// +// The purpose of this function is bytes.Buffer compatibility. +func (b *ByteBuffer) Bytes() []byte { + return b.B +} + +// Write implements io.Writer - it appends p to ByteBuffer.B +func (b *ByteBuffer) Write(p []byte) (int, error) { + b.B = append(b.B, p...) + return len(p), nil +} + +// WriteByte appends the byte c to the buffer. +// +// The purpose of this function is bytes.Buffer compatibility. +// +// The function always returns nil. +func (b *ByteBuffer) WriteByte(c byte) error { + b.B = append(b.B, c) + return nil +} + +// WriteString appends s to ByteBuffer.B. +func (b *ByteBuffer) WriteString(s string) (int, error) { + b.B = append(b.B, s...) + return len(s), nil +} + +// Set sets ByteBuffer.B to p. +func (b *ByteBuffer) Set(p []byte) { + b.B = append(b.B[:0], p...) +} + +// SetString sets ByteBuffer.B to s. +func (b *ByteBuffer) SetString(s string) { + b.B = append(b.B[:0], s...) +} + +// String returns string representation of ByteBuffer.B. +func (b *ByteBuffer) String() string { + return string(b.B) +} + +// Reset makes ByteBuffer.B empty. +func (b *ByteBuffer) Reset() { + b.B = b.B[:0] +} diff --git a/vendor/github.com/valyala/bytebufferpool/doc.go b/vendor/github.com/valyala/bytebufferpool/doc.go new file mode 100644 index 000000000..e511b7c59 --- /dev/null +++ b/vendor/github.com/valyala/bytebufferpool/doc.go @@ -0,0 +1,7 @@ +// Package bytebufferpool implements a pool of byte buffers +// with anti-fragmentation protection. +// +// The pool may waste limited amount of memory due to fragmentation. +// This amount equals to the maximum total size of the byte buffers +// in concurrent use. +package bytebufferpool diff --git a/vendor/github.com/valyala/bytebufferpool/pool.go b/vendor/github.com/valyala/bytebufferpool/pool.go new file mode 100644 index 000000000..8bb4134dd --- /dev/null +++ b/vendor/github.com/valyala/bytebufferpool/pool.go @@ -0,0 +1,151 @@ +package bytebufferpool + +import ( + "sort" + "sync" + "sync/atomic" +) + +const ( + minBitSize = 6 // 2**6=64 is a CPU cache line size + steps = 20 + + minSize = 1 << minBitSize + maxSize = 1 << (minBitSize + steps - 1) + + calibrateCallsThreshold = 42000 + maxPercentile = 0.95 +) + +// Pool represents byte buffer pool. +// +// Distinct pools may be used for distinct types of byte buffers. +// Properly determined byte buffer types with their own pools may help reducing +// memory waste. +type Pool struct { + calls [steps]uint64 + calibrating uint64 + + defaultSize uint64 + maxSize uint64 + + pool sync.Pool +} + +var defaultPool Pool + +// Get returns an empty byte buffer from the pool. +// +// Got byte buffer may be returned to the pool via Put call. +// This reduces the number of memory allocations required for byte buffer +// management. +func Get() *ByteBuffer { return defaultPool.Get() } + +// Get returns new byte buffer with zero length. +// +// The byte buffer may be returned to the pool via Put after the use +// in order to minimize GC overhead. +func (p *Pool) Get() *ByteBuffer { + v := p.pool.Get() + if v != nil { + return v.(*ByteBuffer) + } + return &ByteBuffer{ + B: make([]byte, 0, atomic.LoadUint64(&p.defaultSize)), + } +} + +// Put returns byte buffer to the pool. +// +// ByteBuffer.B mustn't be touched after returning it to the pool. +// Otherwise data races will occur. +func Put(b *ByteBuffer) { defaultPool.Put(b) } + +// Put releases byte buffer obtained via Get to the pool. +// +// The buffer mustn't be accessed after returning to the pool. +func (p *Pool) Put(b *ByteBuffer) { + idx := index(len(b.B)) + + if atomic.AddUint64(&p.calls[idx], 1) > calibrateCallsThreshold { + p.calibrate() + } + + maxSize := int(atomic.LoadUint64(&p.maxSize)) + if maxSize == 0 || cap(b.B) <= maxSize { + b.Reset() + p.pool.Put(b) + } +} + +func (p *Pool) calibrate() { + if !atomic.CompareAndSwapUint64(&p.calibrating, 0, 1) { + return + } + + a := make(callSizes, 0, steps) + var callsSum uint64 + for i := uint64(0); i < steps; i++ { + calls := atomic.SwapUint64(&p.calls[i], 0) + callsSum += calls + a = append(a, callSize{ + calls: calls, + size: minSize << i, + }) + } + sort.Sort(a) + + defaultSize := a[0].size + maxSize := defaultSize + + maxSum := uint64(float64(callsSum) * maxPercentile) + callsSum = 0 + for i := 0; i < steps; i++ { + if callsSum > maxSum { + break + } + callsSum += a[i].calls + size := a[i].size + if size > maxSize { + maxSize = size + } + } + + atomic.StoreUint64(&p.defaultSize, defaultSize) + atomic.StoreUint64(&p.maxSize, maxSize) + + atomic.StoreUint64(&p.calibrating, 0) +} + +type callSize struct { + calls uint64 + size uint64 +} + +type callSizes []callSize + +func (ci callSizes) Len() int { + return len(ci) +} + +func (ci callSizes) Less(i, j int) bool { + return ci[i].calls > ci[j].calls +} + +func (ci callSizes) Swap(i, j int) { + ci[i], ci[j] = ci[j], ci[i] +} + +func index(n int) int { + n-- + n >>= minBitSize + idx := 0 + for n > 0 { + n >>= 1 + idx++ + } + if idx >= steps { + idx = steps - 1 + } + return idx +} diff --git a/vendor/github.com/valyala/fastjson/LICENSE b/vendor/github.com/valyala/fastjson/LICENSE new file mode 100644 index 000000000..6f665f3e2 --- /dev/null +++ b/vendor/github.com/valyala/fastjson/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2018 Aliaksandr Valialkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/valyala/fastjson/fastfloat/parse.go b/vendor/github.com/valyala/fastjson/fastfloat/parse.go new file mode 100644 index 000000000..76a37a2f5 --- /dev/null +++ b/vendor/github.com/valyala/fastjson/fastfloat/parse.go @@ -0,0 +1,231 @@ +package fastfloat + +import ( + "math" + "strconv" +) + +// ParseUint64BestEffort parses uint64 number s. +// +// It is equivalent to strconv.ParseUint(s, 10, 64), but is faster. +// +// 0 is returned if the number cannot be parsed. +func ParseUint64BestEffort(s string) uint64 { + if len(s) == 0 { + return 0 + } + i := uint(0) + d := uint64(0) + j := i + for i < uint(len(s)) { + if s[i] >= '0' && s[i] <= '9' { + d = d*10 + uint64(s[i]-'0') + i++ + if i > 18 { + // The integer part may be out of range for uint64. + // Fall back to slow parsing. + dd, err := strconv.ParseUint(s, 10, 64) + if err != nil { + return 0 + } + return dd + } + continue + } + break + } + if i <= j { + return 0 + } + if i < uint(len(s)) { + // Unparsed tail left. + return 0 + } + return d +} + +// ParseInt64BestEffort parses int64 number s. +// +// It is equivalent to strconv.ParseInt(s, 10, 64), but is faster. +// +// 0 is returned if the number cannot be parsed. +func ParseInt64BestEffort(s string) int64 { + if len(s) == 0 { + return 0 + } + i := uint(0) + minus := s[0] == '-' + if minus { + i++ + if i >= uint(len(s)) { + return 0 + } + } + + d := int64(0) + j := i + for i < uint(len(s)) { + if s[i] >= '0' && s[i] <= '9' { + d = d*10 + int64(s[i]-'0') + i++ + if i > 18 { + // The integer part may be out of range for int64. + // Fall back to slow parsing. + dd, err := strconv.ParseInt(s, 10, 64) + if err != nil { + return 0 + } + return dd + } + continue + } + break + } + if i <= j { + return 0 + } + if i < uint(len(s)) { + // Unparsed tail left. + return 0 + } + if minus { + d = -d + } + return d +} + +// ParseBestEffort parses floating-point number s. +// +// It is equivalent to strconv.ParseFloat(s, 64), but is faster. +// +// 0 is returned if the number cannot be parsed. +func ParseBestEffort(s string) float64 { + if len(s) == 0 { + return 0 + } + i := uint(0) + minus := s[0] == '-' + if minus { + i++ + if i >= uint(len(s)) { + return 0 + } + } + + d := uint64(0) + j := i + for i < uint(len(s)) { + if s[i] >= '0' && s[i] <= '9' { + d = d*10 + uint64(s[i]-'0') + i++ + if i > 18 { + // The integer part may be out of range for uint64. + // Fall back to slow parsing. + f, err := strconv.ParseFloat(s, 64) + if err != nil && !math.IsInf(f, 0) { + return 0 + } + return f + } + continue + } + break + } + if i <= j { + return 0 + } + f := float64(d) + if i >= uint(len(s)) { + // Fast path - just integer. + if minus { + f = -f + } + return f + } + + if s[i] == '.' { + // Parse fractional part. + i++ + if i >= uint(len(s)) { + return 0 + } + fr := uint64(0) + j := i + for i < uint(len(s)) { + if s[i] >= '0' && s[i] <= '9' { + fr = fr*10 + uint64(s[i]-'0') + i++ + if i-j > 18 { + // The fractional part may be out of range for uint64. + // Fall back to standard parsing. + f, err := strconv.ParseFloat(s, 64) + if err != nil && !math.IsInf(f, 0) { + return 0 + } + return f + } + continue + } + break + } + if i <= j { + return 0 + } + f += float64(fr) / math.Pow10(int(i-j)) + if i >= uint(len(s)) { + // Fast path - parsed fractional number. + if minus { + f = -f + } + return f + } + } + if s[i] == 'e' || s[i] == 'E' { + // Parse exponent part. + i++ + if i >= uint(len(s)) { + return 0 + } + expMinus := false + if s[i] == '+' || s[i] == '-' { + expMinus = s[i] == '-' + i++ + if i >= uint(len(s)) { + return 0 + } + } + exp := int16(0) + j := i + for i < uint(len(s)) { + if s[i] >= '0' && s[i] <= '9' { + exp = exp*10 + int16(s[i]-'0') + i++ + if exp > 300 { + // The exponent may be too big for float64. + // Fall back to standard parsing. + f, err := strconv.ParseFloat(s, 64) + if err != nil && !math.IsInf(f, 0) { + return 0 + } + return f + } + continue + } + break + } + if i <= j { + return 0 + } + if expMinus { + exp = -exp + } + f *= math.Pow10(int(exp)) + if i >= uint(len(s)) { + if minus { + f = -f + } + return f + } + } + return 0 +} diff --git a/vendor/github.com/valyala/fastrand/.travis.yml b/vendor/github.com/valyala/fastrand/.travis.yml new file mode 100644 index 000000000..336ccde07 --- /dev/null +++ b/vendor/github.com/valyala/fastrand/.travis.yml @@ -0,0 +1,16 @@ +language: go + +go: + - 1.7 + - 1.8 + +script: + # build test for supported platforms + - GOOS=linux go build + - GOOS=darwin go build + - GOOS=freebsd go build + - GOARCH=386 go build + + # run tests on a standard platform + - go test -v ./... + diff --git a/vendor/github.com/valyala/fastrand/LICENSE b/vendor/github.com/valyala/fastrand/LICENSE new file mode 100644 index 000000000..a2b05f669 --- /dev/null +++ b/vendor/github.com/valyala/fastrand/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Aliaksandr Valialkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/valyala/fastrand/README.md b/vendor/github.com/valyala/fastrand/README.md new file mode 100644 index 000000000..3d384c6be --- /dev/null +++ b/vendor/github.com/valyala/fastrand/README.md @@ -0,0 +1,76 @@ +[![Build Status](https://travis-ci.org/valyala/fastrand.svg)](https://travis-ci.org/valyala/fastrand) +[![GoDoc](https://godoc.org/github.com/valyala/fastrand?status.svg)](http://godoc.org/github.com/valyala/fastrand) +[![Go Report](https://goreportcard.com/badge/github.com/valyala/fastrand)](https://goreportcard.com/report/github.com/valyala/fastrand) + + +# fastrand + +Fast pseudorandom number generator. + + +# Features + +- Optimized for speed. +- Performance scales on multiple CPUs. + +# How does it work? + +It abuses [sync.Pool](https://golang.org/pkg/sync/#Pool) for maintaining +"per-CPU" pseudorandom number generators. + +TODO: firgure out how to use real per-CPU pseudorandom number generators. + + +# Benchmark results + + +``` +$ GOMAXPROCS=1 go test -bench=. github.com/valyala/fastrand +goos: linux +goarch: amd64 +pkg: github.com/valyala/fastrand +BenchmarkUint32n 50000000 29.7 ns/op +BenchmarkRNGUint32n 200000000 6.50 ns/op +BenchmarkRNGUint32nWithLock 100000000 21.5 ns/op +BenchmarkMathRandInt31n 50000000 31.8 ns/op +BenchmarkMathRandRNGInt31n 100000000 17.9 ns/op +BenchmarkMathRandRNGInt31nWithLock 50000000 30.2 ns/op +PASS +ok github.com/valyala/fastrand 10.634s +``` + +``` +$ GOMAXPROCS=2 go test -bench=. github.com/valyala/fastrand +goos: linux +goarch: amd64 +pkg: github.com/valyala/fastrand +BenchmarkUint32n-2 100000000 17.6 ns/op +BenchmarkRNGUint32n-2 500000000 3.36 ns/op +BenchmarkRNGUint32nWithLock-2 50000000 32.0 ns/op +BenchmarkMathRandInt31n-2 20000000 51.2 ns/op +BenchmarkMathRandRNGInt31n-2 100000000 11.0 ns/op +BenchmarkMathRandRNGInt31nWithLock-2 20000000 91.0 ns/op +PASS +ok github.com/valyala/fastrand 9.543s +``` + +``` +$ GOMAXPROCS=4 go test -bench=. github.com/valyala/fastrand +goos: linux +goarch: amd64 +pkg: github.com/valyala/fastrand +BenchmarkUint32n-4 100000000 14.2 ns/op +BenchmarkRNGUint32n-4 500000000 3.30 ns/op +BenchmarkRNGUint32nWithLock-4 20000000 88.7 ns/op +BenchmarkMathRandInt31n-4 10000000 145 ns/op +BenchmarkMathRandRNGInt31n-4 200000000 8.35 ns/op +BenchmarkMathRandRNGInt31nWithLock-4 20000000 102 ns/op +PASS +ok github.com/valyala/fastrand 11.534s +``` + +As you can see, [fastrand.Uint32n](https://godoc.org/github.com/valyala/fastrand#Uint32n) +scales on multiple CPUs, while [rand.Int31n](https://golang.org/pkg/math/rand/#Int31n) +doesn't scale. Their performance is comparable on `GOMAXPROCS=1`, +but `fastrand.Uint32n` runs 3x faster than `rand.Int31n` on `GOMAXPROCS=2` +and 10x faster than `rand.Int31n` on `GOMAXPROCS=4`. diff --git a/vendor/github.com/valyala/fastrand/fastrand.go b/vendor/github.com/valyala/fastrand/fastrand.go new file mode 100644 index 000000000..3ea9177cc --- /dev/null +++ b/vendor/github.com/valyala/fastrand/fastrand.go @@ -0,0 +1,74 @@ +// Package fastrand implements fast pesudorandom number generator +// that should scale well on multi-CPU systems. +// +// Use crypto/rand instead of this package for generating +// cryptographically secure random numbers. +package fastrand + +import ( + "sync" + "time" +) + +// Uint32 returns pseudorandom uint32. +// +// It is safe calling this function from concurrent goroutines. +func Uint32() uint32 { + v := rngPool.Get() + if v == nil { + v = &RNG{} + } + r := v.(*RNG) + x := r.Uint32() + rngPool.Put(r) + return x +} + +var rngPool sync.Pool + +// Uint32n returns pseudorandom uint32 in the range [0..maxN). +// +// It is safe calling this function from concurrent goroutines. +func Uint32n(maxN uint32) uint32 { + x := Uint32() + // See http://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/ + return uint32((uint64(x) * uint64(maxN)) >> 32) +} + +// RNG is a pseudorandom number generator. +// +// It is unsafe to call RNG methods from concurrent goroutines. +type RNG struct { + x uint32 +} + +// Uint32 returns pseudorandom uint32. +// +// It is unsafe to call this method from concurrent goroutines. +func (r *RNG) Uint32() uint32 { + for r.x == 0 { + r.x = getRandomUint32() + } + + // See https://en.wikipedia.org/wiki/Xorshift + x := r.x + x ^= x << 13 + x ^= x >> 17 + x ^= x << 5 + r.x = x + return x +} + +// Uint32n returns pseudorandom uint32 in the range [0..maxN). +// +// It is unsafe to call this method from concurrent goroutines. +func (r *RNG) Uint32n(maxN uint32) uint32 { + x := r.Uint32() + // See http://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/ + return uint32((uint64(x) * uint64(maxN)) >> 32) +} + +func getRandomUint32() uint32 { + x := time.Now().UnixNano() + return uint32((x >> 32) ^ x) +} diff --git a/vendor/github.com/valyala/fastrand/go.mod b/vendor/github.com/valyala/fastrand/go.mod new file mode 100644 index 000000000..958910b75 --- /dev/null +++ b/vendor/github.com/valyala/fastrand/go.mod @@ -0,0 +1 @@ +module github.com/valyala/fastrand diff --git a/vendor/github.com/valyala/gozstd/.gitignore b/vendor/github.com/valyala/gozstd/.gitignore new file mode 100644 index 000000000..6e92f57d4 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/.gitignore @@ -0,0 +1 @@ +tags diff --git a/vendor/github.com/valyala/gozstd/.travis.yml b/vendor/github.com/valyala/gozstd/.travis.yml new file mode 100644 index 000000000..648354edc --- /dev/null +++ b/vendor/github.com/valyala/gozstd/.travis.yml @@ -0,0 +1,20 @@ +language: go + +os: + - linux + - osx + +go: + - 1.10.x + +script: + # build test for supported platforms + - GOARCH=amd64 go build + + # run tests on a standard platform + - go test -v -coverprofile=coverage.txt -covermode=atomic + - go test -v -race + +after_success: + # Upload coverage results to codecov.io + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/valyala/gozstd/LICENSE b/vendor/github.com/valyala/gozstd/LICENSE new file mode 100644 index 000000000..6f665f3e2 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2018 Aliaksandr Valialkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/valyala/gozstd/Makefile b/vendor/github.com/valyala/gozstd/Makefile new file mode 100644 index 000000000..cef56122d --- /dev/null +++ b/vendor/github.com/valyala/gozstd/Makefile @@ -0,0 +1,45 @@ +GOOS ?= $(shell go env GOOS) +GOARCH ?= $(shell go env GOARCH) +GOOS_GOARCH := $(GOOS)_$(GOARCH) +GOOS_GOARCH_NATIVE := $(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH) +LIBZSTD_NAME := libzstd_$(GOOS_GOARCH).a + +.PHONY: libzstd.a + +libzstd.a: $(LIBZSTD_NAME) + +$(LIBZSTD_NAME): +ifeq ($(GOOS_GOARCH),$(GOOS_GOARCH_NATIVE)) + cd zstd/lib && ZSTD_LEGACY_SUPPORT=0 $(MAKE) clean libzstd.a + mv zstd/lib/libzstd.a $(LIBZSTD_NAME) +else +ifeq ($(GOOS_GOARCH),linux_arm) + cd zstd/lib && CC=arm-linux-gnueabi-gcc ZSTD_LEGACY_SUPPORT=0 $(MAKE) clean libzstd.a + mv zstd/lib/libzstd.a libzstd_linux_arm.a +endif +ifeq ($(GOOS_GOARCH),linux_arm64) + cd zstd/lib && CC=aarch64-linux-gnu-gcc ZSTD_LEGACY_SUPPORT=0 $(MAKE) clean libzstd.a + mv zstd/lib/libzstd.a libzstd_linux_arm64.a +endif +endif + +clean: + rm -f $(LIBZSTD_NAME) + cd zstd && make clean + +update-zstd: + rm -rf zstd-tmp + git clone --branch master --depth 1 https://github.com/Facebook/zstd zstd-tmp + rm -rf zstd-tmp/.git + rm -rf zstd + mv zstd-tmp zstd + $(MAKE) clean libzstd.a + cp zstd/lib/zstd.h . + cp zstd/lib/dictBuilder/zdict.h . + cp zstd/lib/common/zstd_errors.h . + +test: + CGO_ENABLED=1 GODEBUG=cgocheck=2 go test -v + +bench: + CGO_ENABLED=1 go test -bench=. diff --git a/vendor/github.com/valyala/gozstd/README.md b/vendor/github.com/valyala/gozstd/README.md new file mode 100644 index 000000000..4aecf93de --- /dev/null +++ b/vendor/github.com/valyala/gozstd/README.md @@ -0,0 +1,73 @@ +[![Build Status](https://travis-ci.org/valyala/gozstd.svg)](https://travis-ci.org/valyala/gozstd) +[![GoDoc](https://godoc.org/github.com/valyala/gozstd?status.svg)](http://godoc.org/github.com/valyala/gozstd) +[![Go Report](https://goreportcard.com/badge/github.com/valyala/gozstd)](https://goreportcard.com/report/github.com/valyala/gozstd) +[![codecov](https://codecov.io/gh/valyala/gozstd/branch/master/graph/badge.svg)](https://codecov.io/gh/valyala/gozstd) + +# gozstd - go wrapper for [zstd](http://facebook.github.io/zstd/) + + +## Features + + * Vendors upstream [zstd](https://github.com/facebook/zstd) without any modifications. + * [Simple API](https://godoc.org/github.com/valyala/gozstd). + * Optimized for speed. The API may be easily used in zero allocations mode. + * `Compress*` and `Decompress*` functions are optimized for high concurrency. + * Proper [Writer.Flush](https://godoc.org/github.com/valyala/gozstd#Writer.Flush) + for network apps. + * Supports the following features from upstream [zstd](https://facebook.github.io/zstd/): + * Block / stream compression / decompression with all the supported compression levels + and with dictionary support. + * [Dictionary](https://github.com/facebook/zstd#the-case-for-small-data-compression) + building from a sample set. The created dictionary may be saved to persistent storage / + transfered over the network. + * Dictionary loading for compression / decompression. + + Pull requests for missing upstream `zstd` features are welcome. + +## Quick start + + +### How to install `gozstd`? + +``` +go get -u github.com/valyala/gozstd +``` + +### How to compress data? + +The easiest way is just to use [Compress](https://godoc.org/github.com/valyala/gozstd#Compress): + +```go + compressedData := Compress(nil, data) +``` + +There is also [StreamCompress](https://godoc.org/github.com/valyala/gozstd#StreamCompress) +and [Writer](https://godoc.org/github.com/valyala/gozstd#Writer) for stream compression. + +### How to decompress data? + +The easiest way is just to use [Decompress](https://godoc.org/github.com/valyala/gozstd#Decompress): + +```go + data, err := Decompress(nil, compressedData) +``` + +There is also [StreamDecompress](https://godoc.org/github.com/valyala/gozstd#StreamDecompress) +and [Reader](https://godoc.org/github.com/valyala/gozstd#Reader) for stream decompression. + + +## FAQ + + * Q: _Which go version is supported?_ + A: `go1.10` and newer. Pull requests for older go versions support + are accepted. + + * Q: _Which platforms/architectures are supported?_ + A: `linux/amd64`, `linux/arm`, `linux/arm64`, `darwin/amd64`, `windows/amd64`. Pull requests for other platforms/architectures support + are accepted. + + * Q: _I don't trust `libzstd*.a` binary files from the repo or these files dont't work on my OS/ARCH. How to rebuild them?_ + A: Just run `make clean libzstd.a` if your OS/ARCH is supported. + + * Q: _Why the repo contains `libzstd*.a` binary files?_ + A: This simplifies package installation to usual `go get` without additional steps for building the `libzstd*.a` diff --git a/vendor/github.com/valyala/gozstd/dict.go b/vendor/github.com/valyala/gozstd/dict.go new file mode 100644 index 000000000..6533c4de6 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/dict.go @@ -0,0 +1,191 @@ +package gozstd + +/* +#define ZSTD_STATIC_LINKING_ONLY +#include "zstd.h" + +#define ZDICT_STATIC_LINKING_ONLY +#include "zdict.h" + +#include // for uintptr_t + +// The following *_wrapper functions allow avoiding memory allocations +// durting calls from Go. +// See https://github.com/golang/go/issues/24450 . + +static ZSTD_CDict* ZSTD_createCDict_wrapper(uintptr_t dictBuffer, size_t dictSize, int compressionLevel) { + return ZSTD_createCDict((const void *)dictBuffer, dictSize, compressionLevel); +} + +static ZSTD_DDict* ZSTD_createDDict_wrapper(uintptr_t dictBuffer, size_t dictSize) { + return ZSTD_createDDict((const void *)dictBuffer, dictSize); +} + +*/ +import "C" + +import ( + "fmt" + "runtime" + "sync" + "unsafe" +) + +const minDictLen = C.ZDICT_DICTSIZE_MIN + +// BuildDict returns dictionary built from the given samples. +// +// The resulting dictionary size will be close to desiredDictLen. +// +// The returned dictionary may be passed to NewCDict* and NewDDict. +func BuildDict(samples [][]byte, desiredDictLen int) []byte { + if desiredDictLen < minDictLen { + desiredDictLen = minDictLen + } + dict := make([]byte, desiredDictLen) + + // Calculate the total samples size. + samplesBufLen := 0 + for _, sample := range samples { + if len(sample) == 0 { + // Skip empty samples. + continue + } + samplesBufLen += len(sample) + } + + // Construct flat samplesBuf and samplesSizes. + samplesBuf := make([]byte, 0, samplesBufLen) + samplesSizes := make([]C.size_t, 0, len(samples)) + for _, sample := range samples { + samplesBuf = append(samplesBuf, sample...) + samplesSizes = append(samplesSizes, C.size_t(len(sample))) + } + + // Add fake samples if the original samples are too small. + minSamplesBufLen := int(C.ZDICT_CONTENTSIZE_MIN) + if minSamplesBufLen < minDictLen { + minSamplesBufLen = minDictLen + } + for samplesBufLen < minSamplesBufLen { + fakeSample := []byte(fmt.Sprintf("this is a fake sample %d", samplesBufLen)) + samplesBuf = append(samplesBuf, fakeSample...) + samplesSizes = append(samplesSizes, C.size_t(len(fakeSample))) + samplesBufLen += len(fakeSample) + } + + // Run ZDICT_trainFromBuffer under lock, since it looks like it + // is unsafe for concurrent usage (it just randomly crashes). + // TODO: remove this restriction. + + buildDictLock.Lock() + result := C.ZDICT_trainFromBuffer( + unsafe.Pointer(&dict[0]), + C.size_t(len(dict)), + unsafe.Pointer(&samplesBuf[0]), + &samplesSizes[0], + C.unsigned(len(samplesSizes))) + buildDictLock.Unlock() + ensureNoError("ZDICT_trainFromBuffer", result) + + dictLen := int(result) + return dict[:dictLen] +} + +var buildDictLock sync.Mutex + +// CDict is a dictionary used for compression. +// +// A single CDict may be re-used in concurrently running goroutines. +type CDict struct { + p *C.ZSTD_CDict + compressionLevel int +} + +// NewCDict creates new CDict from the given dict. +// +// Call Release when the returned dict is no longer used. +func NewCDict(dict []byte) (*CDict, error) { + return NewCDictLevel(dict, DefaultCompressionLevel) +} + +// NewCDictLevel creates new CDict from the given dict +// using the given compressionLevel. +// +// Call Release when the returned dict is no longer used. +func NewCDictLevel(dict []byte, compressionLevel int) (*CDict, error) { + if len(dict) == 0 { + return nil, fmt.Errorf("dict cannot be empty") + } + + cd := &CDict{ + p: C.ZSTD_createCDict_wrapper( + C.uintptr_t(uintptr(unsafe.Pointer(&dict[0]))), + C.size_t(len(dict)), + C.int(compressionLevel)), + compressionLevel: compressionLevel, + } + // Prevent from GC'ing of dict during CGO call above. + runtime.KeepAlive(dict) + runtime.SetFinalizer(cd, freeCDict) + return cd, nil +} + +// Release releases resources occupied by cd. +// +// cd cannot be used after the release. +func (cd *CDict) Release() { + if cd.p == nil { + return + } + result := C.ZSTD_freeCDict(cd.p) + ensureNoError("ZSTD_freeCDict", result) + cd.p = nil +} + +func freeCDict(v interface{}) { + v.(*CDict).Release() +} + +// DDict is a dictionary used for decompression. +// +// A single DDict may be re-used in concurrently running goroutines. +type DDict struct { + p *C.ZSTD_DDict +} + +// NewDDict creates new DDict from the given dict. +// +// Call Release when the returned dict is no longer needed. +func NewDDict(dict []byte) (*DDict, error) { + if len(dict) == 0 { + return nil, fmt.Errorf("dict cannot be empty") + } + + dd := &DDict{ + p: C.ZSTD_createDDict_wrapper( + C.uintptr_t(uintptr(unsafe.Pointer(&dict[0]))), + C.size_t(len(dict))), + } + // Prevent from GC'ing of dict during CGO call above. + runtime.KeepAlive(dict) + runtime.SetFinalizer(dd, freeDDict) + return dd, nil +} + +// Release releases resources occupied by dd. +// +// dd cannot be used after the release. +func (dd *DDict) Release() { + if dd.p == nil { + return + } + + result := C.ZSTD_freeDDict(dd.p) + ensureNoError("ZSTD_freeDDict", result) + dd.p = nil +} + +func freeDDict(v interface{}) { + v.(*DDict).Release() +} diff --git a/vendor/github.com/valyala/gozstd/go.mod b/vendor/github.com/valyala/gozstd/go.mod new file mode 100644 index 000000000..b9b888cce --- /dev/null +++ b/vendor/github.com/valyala/gozstd/go.mod @@ -0,0 +1 @@ +module github.com/valyala/gozstd diff --git a/vendor/github.com/valyala/gozstd/gozstd.go b/vendor/github.com/valyala/gozstd/gozstd.go new file mode 100644 index 000000000..937319cdd --- /dev/null +++ b/vendor/github.com/valyala/gozstd/gozstd.go @@ -0,0 +1,422 @@ +package gozstd + +/* +#cgo CFLAGS: -O3 + +#define ZSTD_STATIC_LINKING_ONLY +#include "zstd.h" +#include "zstd_errors.h" + +#include // for uintptr_t + +// The following *_wrapper functions allow avoiding memory allocations +// durting calls from Go. +// See https://github.com/golang/go/issues/24450 . + +static size_t ZSTD_compressCCtx_wrapper(ZSTD_CCtx* ctx, uintptr_t dst, size_t dstCapacity, uintptr_t src, size_t srcSize, int compressionLevel) { + return ZSTD_compressCCtx(ctx, (void*)dst, dstCapacity, (const void*)src, srcSize, compressionLevel); +} + +static size_t ZSTD_compress_usingCDict_wrapper(ZSTD_CCtx* ctx, uintptr_t dst, size_t dstCapacity, uintptr_t src, size_t srcSize, const ZSTD_CDict* cdict) { + return ZSTD_compress_usingCDict(ctx, (void*)dst, dstCapacity, (const void*)src, srcSize, cdict); +} + +static size_t ZSTD_decompressDCtx_wrapper(ZSTD_DCtx* ctx, uintptr_t dst, size_t dstCapacity, uintptr_t src, size_t srcSize) { + return ZSTD_decompressDCtx(ctx, (void*)dst, dstCapacity, (const void*)src, srcSize); +} + +static size_t ZSTD_decompress_usingDDict_wrapper(ZSTD_DCtx* ctx, uintptr_t dst, size_t dstCapacity, uintptr_t src, size_t srcSize, const ZSTD_DDict *ddict) { + return ZSTD_decompress_usingDDict(ctx, (void*)dst, dstCapacity, (const void*)src, srcSize, ddict); +} + +static unsigned long long ZSTD_getFrameContentSize_wrapper(uintptr_t src, size_t srcSize) { + return ZSTD_getFrameContentSize((const void*)src, srcSize); +} +*/ +import "C" + +import ( + "fmt" + "io" + "runtime" + "sync" + "unsafe" +) + +// DefaultCompressionLevel is the default compression level. +const DefaultCompressionLevel = 3 // Obtained from ZSTD_CLEVEL_DEFAULT. + +// Compress appends compressed src to dst and returns the result. +func Compress(dst, src []byte) []byte { + return compressDictLevel(dst, src, nil, DefaultCompressionLevel) +} + +// CompressLevel appends compressed src to dst and returns the result. +// +// The given compressionLevel is used for the compression. +func CompressLevel(dst, src []byte, compressionLevel int) []byte { + return compressDictLevel(dst, src, nil, compressionLevel) +} + +// CompressDict appends compressed src to dst and returns the result. +// +// The given dictionary is used for the compression. +func CompressDict(dst, src []byte, cd *CDict) []byte { + return compressDictLevel(dst, src, cd, 0) +} + +func compressDictLevel(dst, src []byte, cd *CDict, compressionLevel int) []byte { + compressInitOnce.Do(compressInit) + + cw := getCompressWork() + cw.dst = dst + cw.src = src + cw.cd = cd + cw.compressionLevel = compressionLevel + compressWorkCh <- cw + <-cw.done + dst = cw.dst + putCompressWork(cw) + return dst +} + +func getCompressWork() *compressWork { + v := compressWorkPool.Get() + if v == nil { + v = &compressWork{ + done: make(chan struct{}), + } + } + return v.(*compressWork) +} + +func putCompressWork(cw *compressWork) { + cw.src = nil + cw.dst = nil + cw.cd = nil + cw.compressionLevel = 0 + compressWorkPool.Put(cw) +} + +type compressWork struct { + dst []byte + src []byte + cd *CDict + compressionLevel int + done chan struct{} +} + +var ( + compressWorkCh chan *compressWork + compressWorkPool sync.Pool + compressInitOnce sync.Once +) + +func compressInit() { + gomaxprocs := runtime.GOMAXPROCS(-1) + + compressWorkCh = make(chan *compressWork, gomaxprocs) + for i := 0; i < gomaxprocs; i++ { + go compressWorker() + } +} + +func compressWorker() { + cctx := C.ZSTD_createCCtx() + cctxDict := C.ZSTD_createCCtx() + + for cw := range compressWorkCh { + cw.dst = compress(cctx, cctxDict, cw.dst, cw.src, cw.cd, cw.compressionLevel) + cw.done <- struct{}{} + } +} + +func compress(cctx, cctxDict *C.ZSTD_CCtx, dst, src []byte, cd *CDict, compressionLevel int) []byte { + if len(src) == 0 { + return dst + } + + dstLen := len(dst) + if cap(dst) > dstLen { + // Fast path - try compressing without dst resize. + dst = dst[:cap(dst)] + + result := compressInternal(cctx, cctxDict, dst[dstLen:], src, cd, compressionLevel, false) + compressedSize := int(result) + if compressedSize >= 0 { + // All OK. + return dst[:dstLen+compressedSize] + } + + if C.ZSTD_getErrorCode(result) != C.ZSTD_error_dstSize_tooSmall { + // Unexpected error. + panic(fmt.Errorf("BUG: unexpected error during compression with cd=%p: %s", cd, errStr(result))) + } + } + + // Slow path - resize dst to fit compressed data. + compressBound := int(C.ZSTD_compressBound(C.size_t(len(src)))) + 1 + if n := dstLen + compressBound - cap(dst) + dstLen; n > 0 { + // This should be optimized since go 1.11 - see https://golang.org/doc/go1.11#performance-compiler. + dst = append(dst[:cap(dst)], make([]byte, n)...) + } + dst = dst[:dstLen+compressBound] + + result := compressInternal(cctx, cctxDict, dst[dstLen:], src, cd, compressionLevel, true) + compressedSize := int(result) + return dst[:dstLen+compressedSize] +} + +func compressInternal(cctx, cctxDict *C.ZSTD_CCtx, dst, src []byte, cd *CDict, compressionLevel int, mustSucceed bool) C.size_t { + if cd != nil { + result := C.ZSTD_compress_usingCDict_wrapper(cctxDict, + C.uintptr_t(uintptr(unsafe.Pointer(&dst[0]))), + C.size_t(cap(dst)), + C.uintptr_t(uintptr(unsafe.Pointer(&src[0]))), + C.size_t(len(src)), + cd.p) + // Prevent from GC'ing of dst and src during CGO call above. + runtime.KeepAlive(dst) + runtime.KeepAlive(src) + if mustSucceed { + ensureNoError("ZSTD_compress_usingCDict_wrapper", result) + } + return result + } + result := C.ZSTD_compressCCtx_wrapper(cctx, + C.uintptr_t(uintptr(unsafe.Pointer(&dst[0]))), + C.size_t(cap(dst)), + C.uintptr_t(uintptr(unsafe.Pointer(&src[0]))), + C.size_t(len(src)), + C.int(compressionLevel)) + // Prevent from GC'ing of dst and src during CGO call above. + runtime.KeepAlive(dst) + runtime.KeepAlive(src) + if mustSucceed { + ensureNoError("ZSTD_compressCCtx_wrapper", result) + } + return result +} + +// Decompress appends decompressed src to dst and returns the result. +func Decompress(dst, src []byte) ([]byte, error) { + return DecompressDict(dst, src, nil) +} + +// DecompressDict appends decompressed src to dst and returns the result. +// +// The given dictionary dd is used for the decompression. +func DecompressDict(dst, src []byte, dd *DDict) ([]byte, error) { + decompressInitOnce.Do(decompressInit) + + dw := getDecompressWork() + dw.dst = dst + dw.src = src + dw.dd = dd + decompressWorkCh <- dw + <-dw.done + dst = dw.dst + err := dw.err + putDecompressWork(dw) + return dst, err +} + +func getDecompressWork() *decompressWork { + v := decompressWorkPool.Get() + if v == nil { + v = &decompressWork{ + done: make(chan struct{}), + } + } + return v.(*decompressWork) +} + +func putDecompressWork(dw *decompressWork) { + dw.dst = nil + dw.src = nil + dw.dd = nil + dw.err = nil + decompressWorkPool.Put(dw) +} + +type decompressWork struct { + dst []byte + src []byte + dd *DDict + err error + done chan struct{} +} + +var ( + decompressWorkCh chan *decompressWork + decompressWorkPool sync.Pool + decompressInitOnce sync.Once +) + +func decompressInit() { + gomaxprocs := runtime.GOMAXPROCS(-1) + + decompressWorkCh = make(chan *decompressWork, gomaxprocs) + for i := 0; i < gomaxprocs; i++ { + go decompressWorker() + } +} + +func decompressWorker() { + dctx := C.ZSTD_createDCtx() + dctxDict := C.ZSTD_createDCtx() + + for dw := range decompressWorkCh { + dw.dst, dw.err = decompress(dctx, dctxDict, dw.dst, dw.src, dw.dd) + dw.done <- struct{}{} + } +} + +func decompress(dctx, dctxDict *C.ZSTD_DCtx, dst, src []byte, dd *DDict) ([]byte, error) { + if len(src) == 0 { + return dst, nil + } + + dstLen := len(dst) + if cap(dst) > dstLen { + // Fast path - try decompressing without dst resize. + dst = dst[:cap(dst)] + + result := decompressInternal(dctx, dctxDict, dst[dstLen:], src, dd) + decompressedSize := int(result) + if decompressedSize >= 0 { + // All OK. + return dst[:dstLen+decompressedSize], nil + } + + if C.ZSTD_getErrorCode(result) != C.ZSTD_error_dstSize_tooSmall { + // Error during decompression. + return dst[:dstLen], fmt.Errorf("decompression error: %s", errStr(result)) + } + } + + // Slow path - resize dst to fit decompressed data. + decompressBound := int(C.ZSTD_getFrameContentSize_wrapper( + C.uintptr_t(uintptr(unsafe.Pointer(&src[0]))), C.size_t(len(src)))) + // Prevent from GC'ing of src during CGO call above. + runtime.KeepAlive(src) + switch uint64(decompressBound) { + case uint64(C.ZSTD_CONTENTSIZE_UNKNOWN): + return streamDecompress(dst, src, dd) + case uint64(C.ZSTD_CONTENTSIZE_ERROR): + return dst, fmt.Errorf("cannod decompress invalid src") + } + decompressBound++ + + if n := dstLen + decompressBound - cap(dst); n > 0 { + // This should be optimized since go 1.11 - see https://golang.org/doc/go1.11#performance-compiler. + dst = append(dst[:cap(dst)], make([]byte, n)...) + } + dst = dst[:dstLen+decompressBound] + + result := decompressInternal(dctx, dctxDict, dst[dstLen:], src, dd) + decompressedSize := int(result) + if decompressedSize >= 0 { + // All OK. + return dst[:dstLen+decompressedSize], nil + } + + // Error during decompression. + return dst[:dstLen], fmt.Errorf("decompression error: %s", errStr(result)) +} + +func decompressInternal(dctx, dctxDict *C.ZSTD_DCtx, dst, src []byte, dd *DDict) C.size_t { + var n C.size_t + if dd != nil { + n = C.ZSTD_decompress_usingDDict_wrapper(dctxDict, + C.uintptr_t(uintptr(unsafe.Pointer(&dst[0]))), + C.size_t(cap(dst)), + C.uintptr_t(uintptr(unsafe.Pointer(&src[0]))), + C.size_t(len(src)), + dd.p) + } else { + n = C.ZSTD_decompressDCtx_wrapper(dctx, + C.uintptr_t(uintptr(unsafe.Pointer(&dst[0]))), + C.size_t(cap(dst)), + C.uintptr_t(uintptr(unsafe.Pointer(&src[0]))), + C.size_t(len(src))) + } + // Prevent from GC'ing of dst and src during CGO calls above. + runtime.KeepAlive(dst) + runtime.KeepAlive(src) + return n +} + +func errStr(result C.size_t) string { + errCode := C.ZSTD_getErrorCode(result) + errCStr := C.ZSTD_getErrorString(errCode) + return C.GoString(errCStr) +} + +func ensureNoError(funcName string, result C.size_t) { + if int(result) >= 0 { + // Fast path - avoid calling C function. + return + } + if C.ZSTD_getErrorCode(result) != 0 { + panic(fmt.Errorf("BUG: unexpected error in %s: %s", funcName, errStr(result))) + } +} + +func streamDecompress(dst, src []byte, dd *DDict) ([]byte, error) { + sd := getStreamDecompressor(dd) + sd.dst = dst + sd.src = src + _, err := sd.zr.WriteTo(sd) + dst = sd.dst + putStreamDecompressor(sd) + return dst, err +} + +type streamDecompressor struct { + dst []byte + src []byte + srcOffset int + + zr *Reader +} + +type srcReader streamDecompressor + +func (sr *srcReader) Read(p []byte) (int, error) { + sd := (*streamDecompressor)(sr) + n := copy(p, sd.src[sd.srcOffset:]) + sd.srcOffset += n + if n < len(p) { + return n, io.EOF + } + return n, nil +} + +func (sd *streamDecompressor) Write(p []byte) (int, error) { + sd.dst = append(sd.dst, p...) + return len(p), nil +} + +func getStreamDecompressor(dd *DDict) *streamDecompressor { + v := streamDecompressorPool.Get() + if v == nil { + sd := &streamDecompressor{ + zr: NewReader(nil), + } + v = sd + } + sd := v.(*streamDecompressor) + sd.zr.Reset((*srcReader)(sd), dd) + return sd +} + +func putStreamDecompressor(sd *streamDecompressor) { + sd.dst = nil + sd.src = nil + sd.srcOffset = 0 + sd.zr.Reset(nil, nil) + streamDecompressorPool.Put(sd) +} + +var streamDecompressorPool sync.Pool diff --git a/vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.a b/vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.a new file mode 100644 index 0000000000000000000000000000000000000000..1385bbb6ea6dc4e47bae137869bc0beeb845be52 GIT binary patch literal 856880 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

e52JWJX^CcAyslgIxbh&^O>Mp?QWmII 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≪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%0A8bSM@e$#Adw;5t)5)hvpyG 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
tG~*h7>$}zCdXj#6Afu4AQ9_ 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 X!g1d&+5uOZpYt_qE;(mmri1h^Ch_^6 literal 0 HcmV?d00001 diff --git a/vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.go b/vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.go new file mode 100644 index 000000000..087a47b2d --- /dev/null +++ b/vendor/github.com/valyala/gozstd/libzstd_darwin_amd64.go @@ -0,0 +1,6 @@ +package gozstd + +/* +#cgo LDFLAGS: ${SRCDIR}/libzstd_darwin_amd64.a +*/ +import "C" diff --git a/vendor/github.com/valyala/gozstd/libzstd_linux_amd64.a b/vendor/github.com/valyala/gozstd/libzstd_linux_amd64.a new file mode 100644 index 0000000000000000000000000000000000000000..9ff325cad711946bffde7627a4331c9f21315acb GIT binary patch literal 874456 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

R3&k1$C;unR>)+-e&4o*u7LGpXILR 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 z zD9;imc{R?bVv{dh(-+aDq5Cx!+HWoS%%{4q!bvS%5*-#@YRscc^QLC30adt)q)1_F zpp>DIh|wWkDlkxP36xt=bV*-DbcqOi_KDXkvvsk7QnFL%xE1+HhXT|*prNb)HT>3a zn-xzVzgN*|Z74d`mJyxY*#Un!0+4|mN8Ji`T!4r@L{PBZ5`A*pElZyYwp*M-EZA{r zuVpBZ-D{PIPPrWy@{)7l5~#yEI$9tf9iK;s$Ruy+kk;1g?W6E}p+ovAqC>_}!q#(W89J2kcTDwP)lt#A z)Wy)C<_`!*keM2J)Rnfmg)j)t8!nYPn+;hJ)6;4Jd63;$442y6Ld04E#Oj5>nd*b^ zP3qcoP?&)&v_hJ#vHwhP6{lmhTx{lN22Wu!5q$TnA3TMCE;WQBJnc!LD7I~j!&Y+u zn)57Qdszx&J_>6n^Kn>@3u)U*J0~nK!j$9?ksN6yr|}qmzh0qdXUbp8%!|U}EAU1w zMm@!_r6qbGLa2}&40s`5@x-h%w~KU(*1;ak7c6hyzb*aG9Jbqmgsv-m+j-du+ z!XCjdpKsxzCWo80PYIR{(>Z8;MP_DU`QM8|;;iw>Yd8rX{F;`3( z`4U8_5j0%cA#Kc+1`~5745`t1iVLT4-3ctU#EX;WZY z@CY|r&ATWS?Bi}kRNZ=8KlN~Ni-E-SMLEX-k}EmPTL4)JzvN?EPZY|yF#NFuU_c`R zlL$r@)3-1Xp7LmvfQSxJlS(TGC>pbF7x9||6peB7p`m1TR}C zKli8zUNoFmuj?^DBcTKuJ0p0t@gi^pnSfNprG8V%$hVSj+V$SG#b{@&#FQBASgS+d zg;c82>QrfI7kG4!1myXMfFvAqA7XuZ0&=k1N7;Nle=ejR zzXLD~^?1GnLf!-QXm44SM?GLYe-`z~g><@R%FxIMQNA`?@*(JOeUQmouw#VcQ>FCY=`dbc?;mB zmf+x-w_W)UZVU7iW_Qx_4dVvd-8A3Ki`7>n-dhirWaf(~ByI3HX{n{IkbYZ4GP|kG zx)th1K}+=#;Z|Xqj1FTtvOSv{>IdQA3(R@GHz1{zm;fw1AarwU^}6R1^V3PjUf*nP z5aNS36)(wuE=@?caE}$~t6NUtvTn#Z=5I-(e0+Y>b8ow zuzsy^|IrR)hBZ9mcyoi$2K$elc|S=Kh3XUB{^DP;K$9PB10}Tq)L`)Lq8~w8265~v z@+GqY&B7g`(}+uPsYbn?Unsl^<=iamq3Jgk!(4xVdxGt+-ilMU(pgL)M735olWsM< zlud7u-(A?UwN-iD?_g0W>F!5pK6rsQItMFgD$;U!y<-%#(!xZ6rVAY`Zw9qC5{mtg zNZ(RY%vT?&LVHiZ%6ddHU`{yP-n4*+vXRW^SMIY?O=Q0@N#nIQvRCS*iy@}+oM9nT zO7AVEeyd$bW@-=V!1_GegyoOhsPb_?Ud=K5#yoI(nj6Qq+WjXatOQf3h7~BWW%jI> z%x{*)^fX!;3rfzhGkJXe((sD-ByoRj2c|y*La7CA=THDbfV)wYT~ZaTiGnwZpVaWr z*<*+4GJ>qnQBg3K4-g)le!X0;U(5B{B(eaSa&D-%#e}bDUF3tx!RE)zR^IFVB_CM~ z)f5^*`w1kb$X^!>Jvk3Ue_fZG(%uz7Pw)s&7HYC|o*au$&%Y2Y$HBFbZ=UUjbBa5} zbc3hPBkoZzb&b*kl%o-vgi;!DQC<)FKFW<~#D`p)a?RV{>$yp8u@#d^&JJ$$AP71!H`0l91*$BLrVzUA81nP^MSsVi+fy4ISiP*I?q(Pc8q z@jjCr?>j5%MbtBNs?g8bXc$=T=3xH;3uPhTUuVgQ2zmk39d%p;b(Z0HsSb*kU566D zGwU$(fV_41BsVfQiz)?Gs>s5gh-?IV;z`zg>ZNV~#q(hADsCg#6Np(+-~t}!1K&8_ zlmK4{bRt*TS5LP<5d zOYjoxu^z^J>?9Zo;(EL{1C2dchk+&+fLkH7ExML6#SC^BKvWq7ww^q!R<4j zKr%qkLqMp%qo@gi_Hrz!Vf)HqO_uU!J!3plq+$T_~#y4ah=(UB2}ak z)kR@X@)RESGI(A^qZ&)wbTzKW4LrY?7NlT!;kGDvO=3RFxQ-ISO`(*0*bPa76A4$t zZrH^R@0J?#x3PMiU{g*=D=WUJdNxu|JHB8d2V5FW?L2dlo?^1tX7w-(jXb3_2|BBn zbY-T<1F8g`s8>8OM3dVMx@8R&cWq{y|Dsja3ZgfYXlxb-tmL?9^tINA?xou5rF%o$ zGJy-K5(PJ*lK6=86Ha5Blc`0y6Qj0R{hKHvi9*3fvpmU`4dfczpy?7VW5)V4PJ z#Mp5Nf|*)`Sldmtq28aFIrl(ZmrdFUGLb%KGuaYLW$x#Z{x#cfe2SR5#b{S-nz5(N z<_?L(l#w78scSW0qkc2###)WK)-!}i>Bi21fJEuWCUavFi6zEc$0jz9Jd$?B3sa7b z3v=1BE|Nop=o-cvnu)eqOv1F_otJXJB2BwGB4C-JNds6cAG6lO5KM}JMyneFjetc! zGoRnFuaibX;9{Vp-G5ysvyC)BlH+EjG%gD(vs6P4P|WJ)0g4IXOE6vwC<3`b5|*5d z#A}o+$8*8hlcs0($Y?IRZ4OKXkxo||#oA?t44CBdln9sn=0*Y6><|Bi++DrH+dd+!9Sa)W(@223|sKoW>m`DQQ&> zuPDJS+PHC&xWfduCm8YDHmDf8LVvIKP@Wd#1jXz07eI;22|6#hlN(6_|8uVe5Mi>Y zfLbn3O;)$@s-hyyZ0(3iBaa+0aV}>Yd6EYeF9|9P*dd#c4?8~(b`b$FRvt~PLok7f z=34~B!hg`lf4wDJ{PbW+BW-?*tg9C))A3!RdmWilGlm~m7G4^P7!@(6Q z?{j&uO_>7fp-~&^acwo)GD|&hv}gP5pVZmnQea;PEx;x%MlV#bNeWL5vtJVoPfA&% zyzeAsh?KIz|BY0w<<%eTgPztReEF*L}^Cf{=@%j5X>y2U(Y@?Lc;RhE`+AbE#gC>ufz~4sX3RfMoY&5CzG)T zGBcCgP;N|czPsyf#u+z>YM!T&#k@^qzRti{+$-58E$iomn-2Zp1x*C1@Hi0(Y9{G8 zk*tdg`KEH4VHcS;6ZmRAPl6Zu&)O&C_J0d^?Pv^U#QkS8*Y2crgQ!L_J)x3S@s{cM zhB**~Z|YhlbYK4ant?Y{yEtd0V>HRkK2%VF195G$s+sO@n3z7rFF2sIhTxP`t3xj8 z5~q}O04dv%`H()1ZJU(7K7#}6OSD9H)nIHJ$C9qc^5j35sof74ep@Azu`O*aP>ar< zifhjuU*|1Qf`!zk%J_|&D!4MUc0c8G^yb_AR?=#HB2!)O^&E^?mYKNAC#2ppd54VV z4ZLX&8ExCV5Pe=e^JV3pYtB}ho#vlkQ_wTNuFYTVPp;-&vp<>CnjvgVj`9IbZtzlZ`pIFYndP6NIe54(}zRC+SF$YxhEI0Hq)U{acfC~{ZGcp+)_ zf!EW{(L%}?{Fi|htPC!b4QdcVtqL^>Q576{7Fp=FCpDBoMf3s`X(_#eB7GV9MujPxhYe?$j#EptOn`s zgmlZS=14b;{0n&gJM!)IeV&^F67Kb0$Ri1U`DFawd@_DFH{qfW1{4;ULP#*ST79yH z@jz5t`7!dCI6!c`Fli7mF@)C8*{m39Uk{;njUo(Kkuu~Z!JY5LvKRaWsWmimgnbO| zfA&29egyX)l$|K4m>OY32N|}ELfC0y{X?V>=BdIsp(Ig0X-$ro8ox@j8`%;#y+Uha?6b{v4>W??hirW665nn+55HsVmjsIWE;aO5KX7E2Ar1HSXIGv zb`u|bu<7)=jYMJ^vrd9WBZU<}B%+2H4ky;@{VeqaUjy=8AHvWhj9L0%Lp`FX6aRUT zR@cTJkwRE+rTNExLW1KCs?u9ELZHFJl+P=)pHyjG_&OLc&;0ridu35jl+Z4T+DXe$lfuu zZXB}5ZX9%1*p2e)(p)!S*Vy&$3%l_eR|*cW?oL1#s=d*S^2dgH2mejj5SM|&Zd8Nw zU^oTdUy-6WKl)2JiP>Ff==0`GkfUh~{)J7{d#L7@gH*F(Noh3}s}u|^462fyXFk8( z03o0p{Cuyi_tVL2yx_Cypz~LD2ROG#DJCXXyaNoSqu{%6q+&*s%>2}5&1Jr|`wSUU za218ao8phOI4W$Jh9lR(|G`YIUFl;_@nt5b6BHXQ*C$C&fpSI-rSKgT4w+bRlRg5I zRfGCgu7yGlXYYb5`A}W_4q31BTixTd{WBjG&p^ju({_gIn)+M(QQ@>jOg)ZHP${^t zdN|jqkdKG_TAxm5#x;*Kv`k36X8ukFEy9ru<)eamd-XrTweDep$4rD-FKEI`A@8XU`;l7W)u5K=@=9pd zgi+0Ws*DI==#HUDD)1r6ZadlvOme{pT}MJ!lA!;^A=epNK(jxg!qBI~7(S!ghB1jz z&sd!(j4*f`? zp5=cde-b+?wjtTG`BoDuj||PJ0rZOvpbsb_QTpSx5CQp_6SpeQx{FZPoIa;smPG_A zxt^!bFkq8W>|R zkBLd%)Eo%AwSKGCMira zgEHErnRzgtda#N^ySV*JSd?C}*(I7;0F_XpnU_qWnG^S$+VYy$y9@=B63y(woN^_H z&y;Eg4U$sLNEIl*rg(ZTfjTCm=8*QPa*H*Bc72{NrFpAKvdw9Tr@y~O-HAQWf~xMd z*>U+!)_0^QH2H6nWM*^qMfVaHv}H zU9g(>D%3`M`s~)W^yG%Pe-*u%+uYMHCL|GxZq1_K@f&}Y3(J8YPTZS(s~*JDH!G%u zch5HTGo4fY2jb~p_4A;E@9LHP*J^$4WweOw>&erCFO!~kG&RyF{lQ7QqjI@^Ta`Py zfty_3nH%sV@cQn+i^t@hsjJbf5R+s{BlQu_-yE`UOr%G&U9mDhOvlKZ6aFhYWmXZ} zm1ucYc{enH=@U%M?@x~;7lA!gfR?)Lt;DET6(kJ7nuWcIa`x;P=ZZZYVO+!$GR#GU#NI%)Fq8Z&ig}r;SKm3*kno=+ zz5p!8MCjv$dH2PWMCNUz4>ndCs7RZvxS2KiUajMfp+gLIbGMKy{jr3d>b1=S)2DWD z5b%0e95HB1KbpvAcbkP31WZ?`{ZE|9GZSjxeBQU;2+`hGg$sQ>utcH7p+P6r5Bs zxoD&g*Lo)W#$>v>DVdqhSy!7Sh3n|JYXwE(nM4x@UhUCYa3@QR!D|}vQS?PX&0* z92yLgEe``bYR~2YRsm!u4T+c5(uq3U*`@sb{R^vsR=xK6KBCYhW~xp!K}u+dBWdw* z7_~^tLTo1IcA@E7#1}f0w(N9m$)|t~a=v&@ghH?4#G68KXcoEe)KjJF1h~d=!$T&*ZSRSTnDH3aauh_XY~nsJYj^FdUBT-X%QR@Ct#el0m~h84XtSg zB}(>l-Ja=ue?|6P6v<@V)Yfku4~0)E$h?j0sJax|sy4Jo)F)HDNv{Pzrm37i2de8D z{B}A4AJPKN@cJ$>nL9soIT^LX-=V`k(o=wSP_gt$ z@s?A)?j6L?VRee=j)|-BecVti$|@%8iu6e;f1`=HV{JfM*6D4^KD7=i5he&A!p7Re zg<`MB+dvV7;;{z^12Jsw`$L*D+|V3D_|wfTCv%KGuBI$S8H;ky;IJkw#Nny__BQ|5 z?I9Zfh3NY_HAeodbiN$^{!TuJ=?H({spoc&_^Zj^BmSxYV5;Hl0e|({>uVCZF!+0< zu5@fKhrgeYPhRdAxRzh|drnh6{yr=G)hppIr3Fu3*FQ5VgTI$>!N?o6u;A}Ngue>G z@hte;XYdzQlf~cOz2dL+3%B@db5&XV9e-F6{@Q{${8bym>VA62p$m(@IcY%AEgBWF zOURWTam9e-0URC3w3eB0Ya+J%UcRenYuV^xTr4#+oc^#k@rii)OCzBr8+lKpnV#K* zuCbo+UgELDsF#Ir3(UlbEsd^RpIrX(u#U{|gOZt!gG~IcMSL00bTqwBB+1OP%~$6H zhJjb&#C?^ZfM5_}+jv_UcLeH<#ahVj@675xs3kcnAL zFAR?9eB4@bdY3>46#EWG6~xqqVled(#YQkaCs;xWZ$HrB*?9DJ>!I;~2Lu}ee_U0g zo<#WdEbbF~!mqmxV-tS)TMJpEaRSn=>Am3Bs%Dxq_;s(Y3h`_0er56Nt;W6M*8z$g zFa9`;iy`3Gd*F|Q;n(x1{|oqIF@9P87~+@Xk4Bag7qjsi{vY6C|1nGeV>K;YE-vPw} zmQMRj^}8JZT4gqx5q>R|OYVotQ5bD=M+8_1@foeW_f+zm-K7!>lR%V z;#UjXzB2sl8}AU|mugXSOjom23@7|~1skf);R!Y{{nToAQ(o$qI4_KS-rfZZSTBij z+BhP{nT?~@yY5&!p6wDbS8`K!JTRS}I+>!)(LO}++^94nY0uV$qrs8AI$N7RBJ;|O zXt%alcTrM@JQ&f()nM5XZL@H9hD@nNqv}EL9vsUH{7Fg&6mtV&H|(WG77QqFGSlPY zE&u5CtW!*W+P6E}!58TC1IsQ@@o;{I?6$|@kaVJCI34sMIG-1y1Em1hg+ew0xH;0! zmhSL-KBebIpILTo7HY;b^Qy9QYBi4A4U+}NurqJhaWk!mmufJo-%{}Es9a+gv{Jyw~jlBFysn4S-CD5+ZMcwQ3^Qy+tm+N z{w?c&9t)XlDK{}QvV}+m6RI0>_Nj04*50x0({dXJmdQ$laXCs+Gz!_kkfZWAC?_-%aS)ShihFtPfN zI}JSkPA}0(_-#P(-H2>fCBIZKH}-YaI*p#&uxROUAZx z&h)Eqc~=ihPpqw)SmPapHsjj*mi%-Q)v*WW+|$x%WRevQP&?P#jW-n3<<9<2%{fl2D@E53ZX)V0n>W0!$SpllTHU z_6uv%7m`cD%t+54p|^alnoJdQS1Fb|aUIaZ|n@5hv_;&+IErB!StWnF16ZYy8Kys}l);UQPbAuFNc5r_OEo)CsZ8eL&}T+10= z&qh5PTyojKG|N)Ej$a8c(m1c-Iy;4sKB9fPk-=64jLF*Sn3*#|TF>-)=c|6n+d2pi z7!k961(6qPAGc@8IZDpWVab+Sbl#g#Te_4QUe}A#VS;)ygVU*^bYvHsxKmEpJXZ&z z#QW7$4Lk|~Q@N*d@{1j#1k5ip2;0eUV9}titsdH-elPbHH>hwtrse!W9c~A8X#SvT zqCx$TDoO{n6;R68Yj~-b1Y8=K#7ujj%b5!D#s-zrn6g?67E6m3E|%6MdmDBPEtYPy zSSsKaOW#C`b*&m>k?dkIlWuU2l^NIRFxP0YnkE05#rm)rL7@r8>z#ySMFfT)k(Wgo zLG1&2US3d>?pz{oZ}CL# z580~%7&E=JYhhoo7Oa7>VWnDKEm{LN{STX3S651Kv# z8_L@2dJZyuzKA{pGn!S?4Xqqu-sK>Wj6Iml%&p3<&h7+z+g31kn!*3FCsq1qzMJeQM0mix+M1Bjt}uUwbHr}GeR%DT*?ovCeK_ImG7HOu<_z$C0nEpNj3zmR9R z98Axgd)mn^kx#n%rgZIBZKVpbzvZaPhx{NG*6ov;C&6AOCsN@=`Yj)o)V?+qPr|>X znrTY-XPRU@$m`_dx%LbMD6J=v{>LHQk%z~B(@9S#xal>-arEXNNA{b{=@iCipmx9D zJjy3itPKb(+XkAMRI?)a)lE&6ESQ)&*`vMBDOw}`4|b(c2NE6`!F%CI0>0j{fD?}+S0W*QWZyXDtW(_ zs^U6=RoQRqBZH2f#QNE8m~&Bdm!nbbnd)BI_LJ!fvQ*qWlgc|fQV;KF}&^y=L*Wg1G8E&%^QhxhBufr)wd- zvzUAXJN`;qt?xX(J>51fUiCfAjFH6gn|d~f1y&jdU^~dOl%9i!%neXD`C)TrglJ%1 z*C<-;@P89ee{T&{XfGbyt^hV5s+am!gI;z*8Q5rzj{BrYKsVKqZemyTrzGw>`x-sd zu4LsK{<9ta%N_ok*{M4r4VA0gT6SIcdu_!=(?fJ(RAT(36aMctU!!9WND|S|+S5~8 zjVn)Ex~+lZw`zN4Je@J#Ip4&8XW1i^lCKZ0JKxl`ch44ipo&MxA?I#m|1wi2=bc6; zqgo%7%$Gt?OxxVD0qyA&u_7*w86oaH0rG!d|Uz^$q% z_TMlDbU9wMf?Y(sPsARKr$03^(eeN>qBWeE^h8PpJ_8V5qNLm^y~K`DLFHP8vVmHY z%YOr0O{mk*vbxV)Ux$N3W);_&IXL@RKV#C}Uvc8eI!0JR-q;?FOdyKy+_FT&ovqvP|u|gPIzB|pMQYyky?xHED>AJ6m z>+qz7G-0D@RDWE`Lq&h6E;jNbOenVZy zAFUCC3Z&PGe1$$r9p+Q9Rx{SrHq;Uy;Zw8YFb+fg{!vN)U5=3?5y|ipkqXje%~?a$ z(NvQ)tM^d8BdT)(!QywkBT9S|4P%L<-EoP^{?mn4US9)G!ta9bVxu+weVIwa=)_HY zCzjKSHo#h*)#+BR>w{1Z#MUtOaBLl2=}lm{C2h_kqk8M+QyR6L0Wk1-Mz8_O#49Ze zNNCG%lm;vP4Tf?<^`Z9=S@DD5>lB8*bYvi^G_@wqv9*d|tEoDn`G8g?S5KxJygj?t zKa3y&xaD!Sb4r6hxxrr-Ttf{D-C@~@d|e;Z^Tas1oWf^CJ}w|Ft}WF~#@D4Y-^0a! zBett$r%+YE3#ytR?w_*Gc*0QQj5q2{>)bLE9LmzC66Y3!l)^~uOL7<~hrDf+2VKEQ zfvVf9fttJ$G|_>lxfH$#ph3AK5vdE`S8>}1Ys0m&&RyCS#h_{TS=8jRCA4@89TtQ?nf%wQcG(Dms0(JfAy5C%> zdv}`!@<(UdhIRNqHH86T^&=448FVvSpUf#bcRwck((~Hq*sXDUTgHqe4>@+yF6+z?}D6dDZMZGg>cS7-+h9@3JZK&+W@1s|h_w$9kJv1R5Em_X9W=VYVA@VoC zI|)i~V(7|d*F-+yizq4|@o$@7c8=lnwZ4VklWB7^c&4eR>PqAbRYsVTw}XF2I3--U z5&Z zd8uX&Li&_F#btlpClsDxGp}7DVHEX)g-)@|F zaMNKWwCo9g{isdwd#$I$jhRKxI&Ov~oQQg4rW%hO0Rm4p@Z)&?z$-Lkki;=lIH{u^ zqFt7Hq^2XRz)wpEgESc-b?~}ZjAR)?)?7pvV9lz}OD%w1s4DBwbD2J|mR3s>$o#Sr zCS++s_)*s*^*pj5NarxQMl|95h7)TR;l%YJVUTCf%~UP;)g0zi01*a9Bl3wsNG$#W zqVUi&e;=ao-`Ha;QTPd0B}8FYOAi#~^!>Go!U=B< zi6|8L=KQ_5ujRF&s2OtO%nk2DGfgp^8vnLw(>~6~vSX`6N zS%&*=*71^|aNmIM4We!2;_rxPD>e@a(aIBgE5${` zzUN)39G$YWJ#&2%W)gNV*wglVh*ZM@bMZ{mO3!on>y+u7eE7Te!3WztchBKCE_C?6l`O6PU^gHh5*;muvMvWR*l9QhVl@I@YGbh{<jyQ&-H_a7d;sh}s}(VJlYBT|!E@Re5@x}urEIRj-L-u85vhxb3u z!&E;hdX`7#Vz2jY`j#X|X}USt@`uisFck-%Auwxc!6!=#zQqC4(t;BOBZW2gQ4lAE zZpI0v$~ng0!L9s*=Aw#n{y}=w?mruR@X^1y|IP^JGmmUaEY+svcy^}o^pVn)$&Yo#pJTtr@421S0o*6R^9DO4dhB^cVLd&jtOjx&|sgX{JI?FJV^f%}P zh|OFFcd{Agz6eU~pZAY064xXl6BVbp0cunGSwf2F-^9obkoosnGlABU*NX@{=#gme(MRQ~g#~3)lTEh27st6fd?~OGK zVH@t7ZoSHCq#>hHZsfGmUg`)n6e`MW_wqE;Jv&fNlo1&?`|nt^><|~xNgYU>#;?XW zo!{&ie`Cj|8y!N_OU9{XPE&6Ou^JBoCmz`l z6xknav||&cwr&>Vtu@B$jZ=w~^k#FB^dH9*`WV}Xl3@Ykpv@FA z!FB^aP65($p~R3vG1{s~vz_2bX!9!S%CUTu*OiA&S60#$p#v@-;S6H{q$^9&fJa?1 zQP9G!ya-3Ja|z0<{-S}vB1T> zlIuz|r05}J(Li3|CYsYFa1`we*asYGRKh*43;N5>>&OR-=amdDS{X03 zn2++hvzK|jG`~9+s=wzUp6zv&g)G_2UK|v2dJ4gHFROfD{x~Y~ z$8owkn6b*&LB%S_g~Z6<$MV&2g+mSzaRv%4V#Os=h~sd|Se)Yz(R-fjeQ??O5{_cZ ze}eL1<$LPMHrI&h(ZPG^k*RsN;E3k$;>&1zOLq&4U260;) zu~I8#UqVgx?ER8tUfAbx=#AyJ+BFO0 z3`2n_YX(Kk^YnWvq5sr=u3Rxl701}FAXAr|B`b8M)q%1mQ;Bt*4P9x2#dKmQj7C#09MysZpJV%{8zFee zyyZ0FEV54V=AzB~>?uv79u1v?+=<58q#ES4}$w2w1p( z5EIgVBKVaK02B*KM!>k#d}-x$m_{&zvkK))o>o+HmV}7nIz`R0^{%9DOr7PG+QEHp zj-)pYR!V?pdKZ~FcUJCFW$U>ZE6l{2kG7WIZWV4p`l&HH(tKw(0qRo~SdE^6-QCi zHaAkC>$YDzzAx3LKV3ccb%0Z+&f-h?&mKx+pEWD}rFu+n4LnPKX?S{W12^^Dz=1~c z6LhT2F*JDLVm?K+)DVn8d@D0C`8~B8=ImFEy};f8uEB>Tk}K5Q8tOt17aVbf zMO^gsJHMb9@!~93)RQp^4p{J{1~ebr_6mtRY4S@Aa?$Bn+QmX2qo7-+2+G~V31 zh!4r+jj!Frgj||TS06i?J_^_8@xTR}W4>y*OZq0f+=8b0rpRL)W$MV-NOS2)gu|Lt zbK`xXZ{-q62GVL6B7?gpCjuT=Y}~^pr&Nd*v=oG%yH9gf<$bfiZLAGFXCJ5!8&pYp z(k!DG+o1S3Bf^=jM8y6-86QjR`_`Jxj_VlTmDtuq%PaDH6DlaO6ESCqLT7i_E=r8N-`-7( zdL=&ady?N7Tdm6lv0llnBssL<_Dk%Uw%E>OX2M~~Oy^-ZFIsO;Qm`o~ojuyjnCGd6 zDBjE_FV$+a@SH5M&ZbfdI5SlDF>#H^!W|;(M*1i?j^AgNhW*xz8g7Y;mM`0~4E;QX zhtG1Jriz5|l-D~NcPn>rMqaJ?4Lv=H58U~DKAf&tP*-NB`_`%Lk7bIj6)pnD_x(%sId^xG8ix;Fen&YkoTt`jZW6oPI! zc7MTStJ!2l^47G-4)*OwtsQJe676MbH&)4;`C6ZhGajYe2|*V{OmOi9)=jiKIKi8p z(2ka8yuKwo)|3k#O#CXc&2ky;5-_Y0!YYbEr?pQM2C>>m>HHXU+qjQn&~4#{^~v%R z{Eq*0ew$vJ_#Yd&@5r3ka8~BrV{u5ly-6M6u!W63cipkv=EwhNuUutZ@y{Ym+w9K( zQ}ZV3Lru{*MgM4Tc?907mb}SNLn-GWduk*KT{VC&!8534+Hd@GMLj*jlkbvhkU;Of zzHgpEQ<%HG?le~>FsJe4OVF*<=UEF(bc-peXkr;D%9;HnyIr{*yNF+!Mr(`VE1rQvPORG)13ZkH6kA#Je*BBI}>G z^oZHH&~sKi*5pY}?Wd8mGB_}2=Rd3+1~x5=-}2*I!%Gtxi@5b+=sEid?tGh#JD)u- zEvI0`ozrPD#reyRJ7;NPnb30=CYhF!&~wHQz_{gp6oan@QIovCF#g zy*tMx2i}B0L8tCzHAfplB^srHrB4unift!&rXf})@TH?yVa&|7*baFlLZclGswBRr zAy8n<;UY|02dLEHhDt5s#!#se>a^ZVjm6w4JKP2e!C>3QJ`ddxJ)R*KhH+l^ajZNe znq|mZ9>H1f^{z7Eu%uwI2&A`{}H-34&)Z76NH7R!IE6!Pt#d$N9bj zd_4tx9e$kGdpf)*4_()asP6$?FDgLSXA9AF;60)1xaerkkKm@|Z52D1opsnBt4rFWKc`~sB6G$8{fh19>%^CVpNDm zpcN@B4Q93bfA~w;;P2Hjb_7Lu74gAtBh^KG@I$rC(;g6unKyh;0a)`{ph+D#?mZ#a zf%0-Re6WhEB0l&b)~^g^{S+65vY3?@!|_^1WSHU=T-m1NzmfDaKM^IA4 z2P1ZsA85`9*5&wBY^&i`2-Om_Bc8QKxmxThlB-30^4L|LFujO3kuYs2S+Ot;yZYWR z)@)Dg>Ovb~t_ZKghqn%X`Ec4O;z_ zs~lQY!>@kA@|D4=^C?&st6oRCB=2n_Tfm5M9m37tvFd-%ua3bk@!t8BiHec8h4Ol@ zVQ>yqyws(d94p;enM>@!NL%;@jPrWp=r7w*154jL&56TOI4iE)xlJ>&H)E2JtI`am z<_f-giY52jv*iN6ZH9M*1m8=&XnZ!2rwk*qjhYr^HUEM!92SSq46iCXKCiW^;NG!fSBU~J6=jlG^+$M9UL3Qj{>#B9STDPu$OG%J{HoIO z15Eg!o1uY8AYzhdKHvtdG|DoJF*~**;~ey zrxn$fiIetMuYUp-WW)deM)jvq^QwLsToy2X*@v_V2zRfmd1mj#Q|uk&gJc>QgA~V% zbh%q(5Mn2Yx8fuKM!t+m6UPkMOi?8oIdPXH};dE9G5W`wwzgoBjE}g&KIyMHsy>SQ+>C^HS&V2~15&;=G(AWFYCl z+*-Ls!s|HR-=w+}+$>q+&#UD@BOmx2K(jh$pYvw+1eZS#0q=wjpy8* zXnE1=`?5NVAW-6*$^;M^sT0(Zw{pm_A$n+cMH#xmY=Nm_z2|J#zuAoYqPTp#- z`#@eq{M5ublYeLWylSF@rO&JI&r^Ui|2)13^}ob7+kiKvzstrqyMu^^1aoLmST*9C zeR1d6nd+lE{IymtEsbwBweqqCbSJola=ib%nu4%pw9KjX?NxDqYDa#2voGu^zS)#a zQ$c*Qsg;jJ@y$@DMDfiUS*J&7fUUwqTrMQG8I$z|8{h1CO-9e3*%a}4aeOoJS%Q7p zsf$9K9jg#$OQH~Giath|iP#eZSrmkoYx3fp{mKM6+e)}IZ<*XOjaO+r-8-Mo3~W;A zhuA>5aA(DZv@>^w&=62cxZ*7fn|s>dnrl$Lu0aouR?dG=@y}2woA_tr8C!a4g$sZ7 zeiQyI-T8}(IS2bwtNl3@!I2bj-`VBQg+JR!y-5@PthrfKfQV*A;m<&_QqSq{83P}M z@m$VT@%s;#t>SkG^rcl)8ZJ{@#ck!Qm{+!nt042*w-qw-OW~7|xUd@@$AL zKmW_}Eyu=`W z3I{Kvo-Cd07qRX|Lte*CIe}uao|gpqG6IEgPyAOljxGGs1yEQZ$n;WEU2WqCe04zN>T8-#R_?Iwz5yH?Y!EZ`Qkse28Nqe zM&y~u!}wPQ>>A2x9;$#7fZV8$V#5V`?VYpy?Z&i3U~d41`c#*OSo zGlHMED#DJKKwK~55gXdo3p%po_VOM1Z+*aU#toq(PhzwWC#7q(Ecm7)SD7jzJx$Ml z30KSvIRk&_XeLnT*Ypt~EIZnC$YCf*sTV+KG($68Eko(p`23EIi8^*HRTKu^GA2?J zdn;gJFx$wWS&cyx@Z}tYe9!k3d&|g1@%zOlk_x`1NNS_$dn>h=6B4Rr^yLfF802Os z+}13k+QK7$6Qhl{ypY6ZU=B=#(Y8)vi^?I5Hh(93%xQ^C3gV81WPvH=&TYW3kSvTC zb0zwG4sNKedUD(=z*aL&wk9$on}b*AmX(u9ZZ$)jR*a3iGw1Atg^A;&PZ>*CC~w(g z%U@Au`q<VW8qwr`+o;dq^yka7(dA6MjG&1Dh%d^795)u`NW1dR9GZOjK?N`8$%z zO;jGgvERt5hTGrj4{J|X+R$4>USP`nFPOkv@pN2~x4bS{2XoQ4bUuUVTL~FGSGZ6l z%bAg88ehZ2Rj%9Io6K1M)Dr2K#gIH4O3A@fh|zKX`C{ogSjO``RkDamf^Vx3Eu-+o z`szG+CVeMovLlrALb{vA-0Yq1SW3UGCF7@wh6fpAvE&6E^wOZV0yxR z;4*RB)`Q3<6x*vc#J`AFZucKYvV9dQv^^dp1}vi^mKtdMqFPMGOeE(=eC2<)F2l%}nex(`n)mtD!W!1JV{s+o5nDTS-UsmGwCJ5)>PQ2wN~Br>*q5y7v)e zz2Gt&w#WW#bh^LyQm-8<`GTU_QZy4Ot%HFzwEH_d2%NSVnP!(ucu2goKV{#4mx-5_ zXxXWFX(~vVKm|@~R=l*)Z9Y*J0aX!kgq_87M=1|&z%=}!UDiSuH?0-$lFtdwIe3&{ z&AW>mk;25I6|6&(Rh86SUKZ<@=(2|a>SBG`qY*_9~&(S@r%|)Fq;(`%hzr`a^whahHCRsmiss{mrUG;1f#a$me%o@J|toaq|(ogwMTWGMN|a&>|{Ec3jI3*z#PNS z;SzUe6=oOw+6T1@auIo5(?H@h8iNrTFY9q!*Km!mN;8+{**1RlM^PP|(jU}VOKHr< zCSPJ`=kn-QhyNT5vfzMr_i4w{UA_{)h_1{aqNCSS9iu7&L||eIEnW|l9oJECVLPrv z&A1>2HfQ31*Zn6(WpgH;JX(zt108pj&4Tjg?3k}RhZU`f;JMlBYJY#uYvpvV6D=DR z0PWdPwrk+YOA*sMoA1qM;#;QkCIH&Le5Uo4y9(ZgA4vLdMe)x@SY`Pv1;21-aKp(2 zPy41D=a_DLSeG@`jAQc-J>TWB7GK=r=FOd ziI(kN->b3?&{ZUIl#UQ6oy&EM2A0N6pE3Z{2TF(G*3&X!aM0_yho=iO=U2uJcOd3T zj!8c3KkF1UmFwWKuvfU5jJj*Z?@;dyY>HPt5sXAV9m2`qNMGCZyqah=4ka11<$fS=PE{Bs(Dd(BwcbU=<7F-1M$*OAL=LR+}@pMe9tw)lpIPHdbTdccz2XrmbAeB3Je*p(`OJ%@c8f?#( zDmSk(?m>N6Aj?MWt1?0Rl5KvFAGZ%WZWxE`tO9KO7pFXC{1=r)SJ>)2g5GS4{l*6G zYjvC<1pF5@@V)Q+7QHNYW3>H*z+n1;$%2 zu=buW%kfa`Becwl8&EaKX_XJM`;a~IlZ}SN-K95N>=_W~E!@~ll+KsWW|FmJ^l7I*3dv{~m9HR;7x9F=zQSWep)npR>e9$QM>9}S z!HLGaj$dKH0wye^qWVZ96cyEb6P53$)~m2nN$sucLr^y|AC$)t59gb`xZEIv1 z{K_1D>rsd{!EtPqbMY?RQZpkew3>gp`LTDr(h{Ytg@}=pmfPz-N2jJC&g1Z(hZ3(O z)eX8e*>SwCF@jU{Cz;{n!(bQnh6qqRa)z_$l}I0h@)3vP?E3W1-IzVBUwIVpLb7us zG^H9i=oCz{G>hm>`kd-8;KdAXVds|qwQTabwondskLLY(!0Qg)CNf`VqJY{fqbTMg z^a^vcA=IL@V(pR^WftQV6|USONu6MdO(x{Uyx?gbE_4bMsa4|svzcpm8sV8qX-!Y4 z~Xe7M)yH}c07h2jW7Rw&A^+fU1(MA*X%5NhYwTlz;U(`othxdXHWMxOiZ8R z7ieVG_|jc8IIRm>nf{X#v22Ik*~PX^N?)HLMEXm#Rk_Vqld)~+VAx_L{0B3&`>`U{ za24Cq*0Q=ib4vHM=Z&xP7Mw>92xt_)ag!iZleLmjh5IU6tWRXBab7-D%9M$_WHfpv zPnR-l;7zMb*|zx`7T-yaqlg$&Y@0i&j9uWij>^Zu2y+L}cDKh&TJw2lW+r^q@lyj@ ztt>3zg0{`sO3O+A{F?l(`E@#ZGP#=NxQSZ*$+bdT8wZ7`ur8v=WCB~CPG?aA%urm6 z8DLnm*Zm7=BY>twd|3ivCX*nJa`e+(a8PS5*c-lx=&V zi$6;M^xEd2)nMOz+E8@%;8cTHIlHSUnEEUT%pumI=#K7&cGn<9n4z*U^#0DgFyur7 zFNYjayDG~BVGD*xdL*a!#VBf+_-NoFxJD;%-Z>weDmw?b(N*l6kyvIwF!fC|+oi&F+a8e)UMZSZiqdf5i)* zr-D5F7JVBn$v8*VTYC1y53TeOW@a8I$G&`i_)HN$4CCY#@WboH504OmHoFQ>SFpBz zdbU@7cs<@KL*j=^5RMH$yo(D)X?GQWQ-1gZROf#=KfD2O7>pn0G#O{3$#7{U!$7dg z-i%Uh!mVssllL--5RIi~Cz<{*^btDV@-`u1(b_l#1uBj0iBXElE}m??{aX1X%bmRa zUe@UuD$E_7*{Dh#;H&a=+)FG~yjKem0CFPsDmMa9ZTWY2T~A7lRw|8-FmTU~e=Pyk zdk^Gpk0?lpy6!kK>tOgtJP@_%rOv1daZoJZI<5%+ z2A4;_gAv=}-&b`tRQ&t1Hbrh%zejnrg<1{%HFNRz!M~$q!>C-Ty}VJ1yf=AtCr+1x z;h&2sjpo=n-uO?2dHx#Gv+7NwDp+-PNF{Njjn9|M{=x%e?6ai6DaR@8j zqOj64X*Kph+=OFPz5@e=C* zd5cqREijuk9S@SuG5dvY3B2u%l+4=6IeWiUVOUiO+}uykIK@E&+E^J~T+$DD$?9R0 ztMDfhsmL0hQGX*-4P#h@u+hqUeQ(Rm%?3vm1#jatC*}+R6Y53#T^smwyd(*g^Lmaz zQxV#vH5i$LEw(#nY@>B-_>v6N?hPZ*w>W_sMIs(xziWn8((lLAC{jT@uMGu-5cE%Hv{yHz5S% zuq4&YbOSE8G@Z+@06xiY_H<*gus0$>dWqwZ#-Z~5@{X3Z_^_)<-fj~z5hZY336y)? zN+cRh*lOd!(rsvQyT4XjOMMH(G;=BJ0yU?p0iFa0tLy%ASZOc=+0)SjUe5*QDW|6t z0Z_U9R%#R$*qz!+;d-B+XQdnS0yeOicI5hG)BV|dFSUQ^2q1@!=3|0U#=nE}M$mf` z9|RRVadMSV)W≶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%0Di@P)1ATj30Tr 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/valyala/gozstd/libzstd_linux_amd64.go b/vendor/github.com/valyala/gozstd/libzstd_linux_amd64.go new file mode 100644 index 000000000..50c4c5332 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/libzstd_linux_amd64.go @@ -0,0 +1,6 @@ +package gozstd + +/* +#cgo LDFLAGS: ${SRCDIR}/libzstd_linux_amd64.a +*/ +import "C" diff --git a/vendor/github.com/valyala/gozstd/libzstd_linux_arm.a b/vendor/github.com/valyala/gozstd/libzstd_linux_arm.a new file mode 100644 index 0000000000000000000000000000000000000000..0197890e6b4c318e8ffbe66d7e6e8d02f76cbacf GIT binary patch literal 755008 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≺6v>Na0kCS4qS>~N$zQ<{&?!euM(`o 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 Sp*-HvTkw4y=PE&3@cjVu9Zc^4 literal 0 HcmV?d00001 diff --git a/vendor/github.com/valyala/gozstd/libzstd_linux_arm.go b/vendor/github.com/valyala/gozstd/libzstd_linux_arm.go new file mode 100644 index 000000000..b93bb9047 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/libzstd_linux_arm.go @@ -0,0 +1,6 @@ +package gozstd + +/* +#cgo LDFLAGS: ${SRCDIR}/libzstd_linux_arm.a +*/ +import "C" diff --git a/vendor/github.com/valyala/gozstd/libzstd_linux_arm64.a b/vendor/github.com/valyala/gozstd/libzstd_linux_arm64.a new file mode 100644 index 0000000000000000000000000000000000000000..327027d1ec17aaa1051e99f9fe0ed41d1458581b GIT binary patch literal 728432 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�Ky`B!A-NB#tdhh9=y!ySx9cIv=JSo3C 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%0D<3>KMFKgk6zF5vR0xt3& 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�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 WJ`B?M{-I3VUBO^KF#bj3_|H;=2dpq5(c5rtG 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

-n|i%jxkkFMresfy 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"$ia5u0QJ8 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 z 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 Yhq$-=Q4#WA%q11P7waDSf4%wtH|o#0WB>pF literal 0 HcmV?d00001 diff --git a/vendor/github.com/valyala/gozstd/libzstd_linux_arm64.go b/vendor/github.com/valyala/gozstd/libzstd_linux_arm64.go new file mode 100644 index 000000000..e03ba9eca --- /dev/null +++ b/vendor/github.com/valyala/gozstd/libzstd_linux_arm64.go @@ -0,0 +1,6 @@ +package gozstd + +/* +#cgo LDFLAGS: ${SRCDIR}/libzstd_linux_arm64.a +*/ +import "C" diff --git a/vendor/github.com/valyala/gozstd/libzstd_windows_amd64.a b/vendor/github.com/valyala/gozstd/libzstd_windows_amd64.a new file mode 100644 index 0000000000000000000000000000000000000000..cf9b0da39c26c96c815fc7e4eb23dbd72efc0b78 GIT binary patch literal 661504 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

^e)OsHM^$%!EmmST$;_Wop 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

x<|MPlUKJAC4C&Z*;aPyPde*4jSUa@11 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/valyala/gozstd/libzstd_windows_amd64.go b/vendor/github.com/valyala/gozstd/libzstd_windows_amd64.go new file mode 100644 index 000000000..06107ed97 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/libzstd_windows_amd64.go @@ -0,0 +1,6 @@ +package gozstd + +/* +#cgo LDFLAGS: ${SRCDIR}/libzstd_windows_amd64.a +*/ +import "C" diff --git a/vendor/github.com/valyala/gozstd/reader.go b/vendor/github.com/valyala/gozstd/reader.go new file mode 100644 index 000000000..e2536e440 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/reader.go @@ -0,0 +1,237 @@ +package gozstd + +/* +#define ZSTD_STATIC_LINKING_ONLY +#include "zstd.h" +#include "zstd_errors.h" + +#include // for malloc/free +*/ +import "C" + +import ( + "fmt" + "io" + "runtime" + "unsafe" +) + +var ( + dstreamInBufSize = C.ZSTD_DStreamInSize() + dstreamOutBufSize = C.ZSTD_DStreamOutSize() +) + +// Reader implements zstd reader. +type Reader struct { + r io.Reader + ds *C.ZSTD_DStream + dd *DDict + + inBuf *C.ZSTD_inBuffer + outBuf *C.ZSTD_outBuffer + + inBufGo cMemPtr + outBufGo cMemPtr +} + +// NewReader returns new zstd reader reading compressed data from r. +// +// Call Release when the Reader is no longer needed. +func NewReader(r io.Reader) *Reader { + return NewReaderDict(r, nil) +} + +// NewReaderDict returns new zstd reader reading compressed data from r +// using the given DDict. +// +// Call Release when the Reader is no longer needed. +func NewReaderDict(r io.Reader, dd *DDict) *Reader { + ds := C.ZSTD_createDStream() + initDStream(ds, dd) + + inBuf := (*C.ZSTD_inBuffer)(C.malloc(C.sizeof_ZSTD_inBuffer)) + inBuf.src = C.malloc(dstreamInBufSize) + inBuf.size = 0 + inBuf.pos = 0 + + outBuf := (*C.ZSTD_outBuffer)(C.malloc(C.sizeof_ZSTD_outBuffer)) + outBuf.dst = C.malloc(dstreamOutBufSize) + outBuf.size = 0 + outBuf.pos = 0 + + zr := &Reader{ + r: r, + ds: ds, + dd: dd, + inBuf: inBuf, + outBuf: outBuf, + } + + zr.inBufGo = cMemPtr(zr.inBuf.src) + zr.outBufGo = cMemPtr(zr.outBuf.dst) + + runtime.SetFinalizer(zr, freeDStream) + return zr +} + +// Reset resets zr to read from r using the given dictionary dd. +func (zr *Reader) Reset(r io.Reader, dd *DDict) { + zr.inBuf.size = 0 + zr.inBuf.pos = 0 + zr.outBuf.size = 0 + zr.outBuf.pos = 0 + + zr.dd = dd + initDStream(zr.ds, zr.dd) + + zr.r = r +} + +func initDStream(ds *C.ZSTD_DStream, dd *DDict) { + var ddict *C.ZSTD_DDict + if dd != nil { + ddict = dd.p + } + result := C.ZSTD_initDStream_usingDDict(ds, ddict) + ensureNoError("ZSTD_initDStream_usingDDict", result) +} + +func freeDStream(v interface{}) { + v.(*Reader).Release() +} + +// Release releases all the resources occupied by zr. +// +// zr cannot be used after the release. +func (zr *Reader) Release() { + if zr.ds == nil { + return + } + + result := C.ZSTD_freeDStream(zr.ds) + ensureNoError("ZSTD_freeDStream", result) + zr.ds = nil + + C.free(zr.inBuf.src) + C.free(unsafe.Pointer(zr.inBuf)) + zr.inBuf = nil + + C.free(zr.outBuf.dst) + C.free(unsafe.Pointer(zr.outBuf)) + zr.outBuf = nil + + zr.r = nil + zr.dd = nil +} + +// WriteTo writes all the data from zr to w. +// +// It returns the number of bytes written to w. +func (zr *Reader) WriteTo(w io.Writer) (int64, error) { + nn := int64(0) + for { + if zr.outBuf.pos == zr.outBuf.size { + if err := zr.fillOutBuf(); err != nil { + if err == io.EOF { + return nn, nil + } + return nn, err + } + } + n, err := w.Write(zr.outBufGo[zr.outBuf.pos:zr.outBuf.size]) + zr.outBuf.pos += C.size_t(n) + nn += int64(n) + if err != nil { + return nn, err + } + } +} + +// Read reads up to len(p) bytes from zr to p. +func (zr *Reader) Read(p []byte) (int, error) { + if len(p) == 0 { + return 0, nil + } + + if zr.outBuf.pos == zr.outBuf.size { + if err := zr.fillOutBuf(); err != nil { + return 0, err + } + } + + n := copy(p, zr.outBufGo[zr.outBuf.pos:zr.outBuf.size]) + zr.outBuf.pos += C.size_t(n) + return n, nil +} + +func (zr *Reader) fillOutBuf() error { + if zr.inBuf.pos == zr.inBuf.size && zr.outBuf.size < dstreamOutBufSize { + // inBuf is empty and the previously decompressed data size + // is smaller than the maximum possible zr.outBuf.size. + // This means that the internal buffer in zr.ds doesn't contain + // more data to decompress, so read new data into inBuf. + if err := zr.fillInBuf(); err != nil { + return err + } + } + +tryDecompressAgain: + // Try decompressing inBuf into outBuf. + zr.outBuf.size = dstreamOutBufSize + zr.outBuf.pos = 0 + prevInBufPos := zr.inBuf.pos + result := C.ZSTD_decompressStream(zr.ds, zr.outBuf, zr.inBuf) + zr.outBuf.size = zr.outBuf.pos + zr.outBuf.pos = 0 + + if C.ZSTD_getErrorCode(result) != 0 { + return fmt.Errorf("cannot decompress data: %s", errStr(result)) + } + + if zr.outBuf.size > 0 { + // Something has been decompressed to outBuf. Return it. + return nil + } + + // Nothing has been decompressed from inBuf. + if zr.inBuf.pos != prevInBufPos && zr.inBuf.pos < zr.inBuf.size { + // Data has been consumed from inBuf, but decompressed + // into nothing. There is more data in inBuf, so try + // decompressing it again. + goto tryDecompressAgain + } + + // Either nothing has been consumed from inBuf or it has been + // decompressed into nothing and inBuf became empty. + // Read more data into inBuf and try decompressing again. + if err := zr.fillInBuf(); err != nil { + return err + } + goto tryDecompressAgain +} + +func (zr *Reader) fillInBuf() error { + // Copy the remaining data to the start of inBuf. + copy(zr.inBufGo[:dstreamInBufSize], zr.inBufGo[zr.inBuf.pos:zr.inBuf.size]) + zr.inBuf.size -= zr.inBuf.pos + zr.inBuf.pos = 0 + +readAgain: + // Read more data into inBuf. + n, err := zr.r.Read(zr.inBufGo[zr.inBuf.size:dstreamInBufSize]) + zr.inBuf.size += C.size_t(n) + if err == nil { + if n == 0 { + // Nothing has been read. Try reading data again. + goto readAgain + } + return nil + } + if err != io.EOF { + return fmt.Errorf("cannot read data from the underlying reader: %s", err) + } + if n == 0 { + return io.EOF + } + return nil +} diff --git a/vendor/github.com/valyala/gozstd/stream.go b/vendor/github.com/valyala/gozstd/stream.go new file mode 100644 index 000000000..939b1c8e6 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/stream.go @@ -0,0 +1,128 @@ +package gozstd + +import ( + "io" + "sync" +) + +// StreamCompress compresses src into dst. +// +// This function doesn't work with interactive network streams, since data read +// from src may be buffered before passing to dst for performance reasons. +// Use Writer.Flush for interactive network streams. +func StreamCompress(dst io.Writer, src io.Reader) error { + return streamCompressDictLevel(dst, src, nil, DefaultCompressionLevel) +} + +// StreamCompressLevel compresses src into dst using the given compressionLevel. +// +// This function doesn't work with interactive network streams, since data read +// from src may be buffered before passing to dst for performance reasons. +// Use Writer.Flush for interactive network streams. +func StreamCompressLevel(dst io.Writer, src io.Reader, compressionLevel int) error { + return streamCompressDictLevel(dst, src, nil, compressionLevel) +} + +// StreamCompressDict compresses src into dst using the given dict cd. +// +// This function doesn't work with interactive network streams, since data read +// from src may be buffered before passing to dst for performance reasons. +// Use Writer.Flush for interactive network streams. +func StreamCompressDict(dst io.Writer, src io.Reader, cd *CDict) error { + return streamCompressDictLevel(dst, src, cd, 0) +} + +func streamCompressDictLevel(dst io.Writer, src io.Reader, cd *CDict, compressionLevel int) error { + sc := getSCompressor(compressionLevel) + sc.zw.Reset(dst, cd, compressionLevel) + _, err := sc.zw.ReadFrom(src) + if err == nil { + err = sc.zw.Close() + } + putSCompressor(sc) + return err +} + +type sCompressor struct { + zw *Writer + compressionLevel int +} + +func getSCompressor(compressionLevel int) *sCompressor { + p := getSCompressorPool(compressionLevel) + v := p.Get() + if v == nil { + return &sCompressor{ + zw: NewWriterLevel(nil, compressionLevel), + compressionLevel: compressionLevel, + } + } + return v.(*sCompressor) +} + +func putSCompressor(sc *sCompressor) { + sc.zw.Reset(nil, nil, sc.compressionLevel) + p := getSCompressorPool(sc.compressionLevel) + p.Put(sc) +} + +func getSCompressorPool(compressionLevel int) *sync.Pool { + // Use per-level compressor pools, since Writer.Reset is expensive + // between distinct compression levels. + sCompressorPoolLock.Lock() + p := sCompressorPool[compressionLevel] + if p == nil { + p = &sync.Pool{} + sCompressorPool[compressionLevel] = p + } + sCompressorPoolLock.Unlock() + return p +} + +var ( + sCompressorPoolLock sync.Mutex + sCompressorPool = make(map[int]*sync.Pool) +) + +// StreamDecompress decompresses src into dst. +// +// This function doesn't work with interactive network streams, since data read +// from src may be buffered before passing to dst for performance reasons. +// Use Reader for interactive network streams. +func StreamDecompress(dst io.Writer, src io.Reader) error { + return StreamDecompressDict(dst, src, nil) +} + +// StreamDecompressDict decompresses src into dst using the given dictionary dd. +// +// This function doesn't work with interactive network streams, since data read +// from src may be buffered before passing to dst for performance reasons. +// Use Reader for interactive network streams. +func StreamDecompressDict(dst io.Writer, src io.Reader, dd *DDict) error { + sd := getSDecompressor() + sd.zr.Reset(src, dd) + _, err := sd.zr.WriteTo(dst) + putSDecompressor(sd) + return err +} + +type sDecompressor struct { + zr *Reader +} + +func getSDecompressor() *sDecompressor { + v := sDecompressorPool.Get() + if v == nil { + return &sDecompressor{ + zr: NewReader(nil), + } + } + return v.(*sDecompressor) +} + +func putSDecompressor(sd *sDecompressor) { + sd.zr.Reset(nil, nil) + sDecompressorPool.Put(sd) +} + +var sDecompressorPool sync.Pool diff --git a/vendor/github.com/valyala/gozstd/writer.go b/vendor/github.com/valyala/gozstd/writer.go new file mode 100644 index 000000000..cc3389a5c --- /dev/null +++ b/vendor/github.com/valyala/gozstd/writer.go @@ -0,0 +1,292 @@ +package gozstd + +/* +#define ZSTD_STATIC_LINKING_ONLY +#include "zstd.h" + +#include // for malloc/free +*/ +import "C" + +import ( + "fmt" + "io" + "runtime" + "unsafe" +) + +var ( + cstreamInBufSize = C.ZSTD_CStreamInSize() + cstreamOutBufSize = C.ZSTD_CStreamOutSize() +) + +type cMemPtr *[1 << 30]byte + +// Writer implements zstd writer. +type Writer struct { + w io.Writer + compressionLevel int + cs *C.ZSTD_CStream + cd *CDict + + inBuf *C.ZSTD_inBuffer + outBuf *C.ZSTD_outBuffer + + inBufGo cMemPtr + outBufGo cMemPtr +} + +// NewWriter returns new zstd writer writing compressed data to w. +// +// The returned writer must be closed with Close call in order +// to finalize the compressed stream. +// +// Call Release when the Writer is no longer needed. +func NewWriter(w io.Writer) *Writer { + return newWriterDictLevel(w, nil, DefaultCompressionLevel) +} + +// NewWriterLevel returns new zstd writer writing compressed data to w +// at the given compression level. +// +// The returned writer must be closed with Close call in order +// to finalize the compressed stream. +// +// Call Release when the Writer is no longer needed. +func NewWriterLevel(w io.Writer, compressionLevel int) *Writer { + return newWriterDictLevel(w, nil, compressionLevel) +} + +// NewWriterDict returns new zstd writer writing compressed data to w +// using the given cd. +// +// The returned writer must be closed with Close call in order +// to finalize the compressed stream. +// +// Call Release when the Writer is no longer needed. +func NewWriterDict(w io.Writer, cd *CDict) *Writer { + return newWriterDictLevel(w, cd, 0) +} + +func newWriterDictLevel(w io.Writer, cd *CDict, compressionLevel int) *Writer { + cs := C.ZSTD_createCStream() + initCStream(cs, cd, compressionLevel) + + inBuf := (*C.ZSTD_inBuffer)(C.malloc(C.sizeof_ZSTD_inBuffer)) + inBuf.src = C.malloc(cstreamInBufSize) + inBuf.size = 0 + inBuf.pos = 0 + + outBuf := (*C.ZSTD_outBuffer)(C.malloc(C.sizeof_ZSTD_outBuffer)) + outBuf.dst = C.malloc(cstreamOutBufSize) + outBuf.size = cstreamOutBufSize + outBuf.pos = 0 + + zw := &Writer{ + w: w, + compressionLevel: compressionLevel, + cs: cs, + cd: cd, + inBuf: inBuf, + outBuf: outBuf, + } + + zw.inBufGo = cMemPtr(zw.inBuf.src) + zw.outBufGo = cMemPtr(zw.outBuf.dst) + + runtime.SetFinalizer(zw, freeCStream) + return zw +} + +// Reset resets zw to write to w using the given dictionary cd and the given +// compressionLevel. +func (zw *Writer) Reset(w io.Writer, cd *CDict, compressionLevel int) { + zw.inBuf.size = 0 + zw.inBuf.pos = 0 + zw.outBuf.size = cstreamOutBufSize + zw.outBuf.pos = 0 + + zw.cd = cd + initCStream(zw.cs, zw.cd, compressionLevel) + + zw.w = w +} + +func initCStream(cs *C.ZSTD_CStream, cd *CDict, compressionLevel int) { + if cd != nil { + result := C.ZSTD_initCStream_usingCDict(cs, cd.p) + ensureNoError("ZSTD_initCStream_usingCDict", result) + } else { + result := C.ZSTD_initCStream(cs, C.int(compressionLevel)) + ensureNoError("ZSTD_initCStream", result) + } +} + +func freeCStream(v interface{}) { + v.(*Writer).Release() +} + +// Release releases all the resources occupied by zw. +// +// zw cannot be used after the release. +func (zw *Writer) Release() { + if zw.cs == nil { + return + } + + result := C.ZSTD_freeCStream(zw.cs) + ensureNoError("ZSTD_freeCStream", result) + zw.cs = nil + + C.free(unsafe.Pointer(zw.inBuf.src)) + C.free(unsafe.Pointer(zw.inBuf)) + zw.inBuf = nil + + C.free(unsafe.Pointer(zw.outBuf.dst)) + C.free(unsafe.Pointer(zw.outBuf)) + zw.outBuf = nil + + zw.w = nil + zw.cd = nil +} + +// ReadFrom reads all the data from r and writes it to zw. +// +// Returns the number of bytes read from r. +// +// ReadFrom may not flush the compressed data to the underlying writer +// due to performance reasons. +// Call Flush or Close when the compressed data must propagate +// to the underlying writer. +func (zw *Writer) ReadFrom(r io.Reader) (int64, error) { + nn := int64(0) + for { + // Fill the inBuf. + for zw.inBuf.size < cstreamInBufSize { + n, err := r.Read(zw.inBufGo[zw.inBuf.size:cstreamInBufSize]) + if err != nil { + if err == io.EOF { + return nn, nil + } + return nn, err + } + zw.inBuf.size += C.size_t(n) + nn += int64(n) + } + + // Flush the inBuf. + if err := zw.flushInBuf(); err != nil { + return nn, err + } + } +} + +// Write writes p to zw. +// +// Write doesn't flush the compressed data to the underlying writer +// due to performance reasons. +// Call Flush or Close when the compressed data must propagate +// to the underlying writer. +func (zw *Writer) Write(p []byte) (int, error) { + pLen := len(p) + if pLen == 0 { + return 0, nil + } + + for { + n := copy(zw.inBufGo[zw.inBuf.size:cstreamInBufSize], p) + zw.inBuf.size += C.size_t(n) + p = p[n:] + if len(p) == 0 { + // Fast path - just copy the data to input buffer. + return pLen, nil + } + if err := zw.flushInBuf(); err != nil { + return 0, err + } + } +} + +func (zw *Writer) flushInBuf() error { + prevInBufPos := zw.inBuf.pos + result := C.ZSTD_compressStream(zw.cs, zw.outBuf, zw.inBuf) + ensureNoError("ZSTD_compressStream", result) + + // Move the remaining data to the start of inBuf. + copy(zw.inBufGo[:cstreamInBufSize], zw.inBufGo[zw.inBuf.pos:zw.inBuf.size]) + zw.inBuf.size -= zw.inBuf.pos + zw.inBuf.pos = 0 + + if zw.outBuf.size-zw.outBuf.pos > zw.outBuf.pos && prevInBufPos != zw.inBuf.pos { + // There is enough space in outBuf and the last compression + // succeeded, so don't flush outBuf yet. + return nil + } + + // Flush outBuf, since there is low space in it or the last compression + // attempt was unsuccessful. + return zw.flushOutBuf() +} + +func (zw *Writer) flushOutBuf() error { + if zw.outBuf.pos == 0 { + // Nothing to flush. + return nil + } + + outBuf := zw.outBufGo[:zw.outBuf.pos] + n, err := zw.w.Write(outBuf) + zw.outBuf.pos = 0 + if err != nil { + return fmt.Errorf("cannot flush internal buffer to the underlying writer: %s", err) + } + if n != len(outBuf) { + panic(fmt.Errorf("BUG: the underlying writer violated io.Writer contract and didn't return error after writing incomplete data; written %d bytes; want %d bytes", + n, len(outBuf))) + } + return nil +} + +// Flush flushes the remaining data from zw to the underlying writer. +func (zw *Writer) Flush() error { + // Flush inBuf. + for zw.inBuf.size > 0 { + if err := zw.flushInBuf(); err != nil { + return err + } + } + + // Flush the internal buffer to outBuf. + for { + result := C.ZSTD_flushStream(zw.cs, zw.outBuf) + ensureNoError("ZSTD_flushStream", result) + if err := zw.flushOutBuf(); err != nil { + return err + } + if result == 0 { + // No more data left in the internal buffer. + return nil + } + } +} + +// Close finalizes the compressed stream and flushes all the compressed data +// to the underlying writer. +// +// It doesn't close the underlying writer passed to New* functions. +func (zw *Writer) Close() error { + if err := zw.Flush(); err != nil { + return err + } + + for { + result := C.ZSTD_endStream(zw.cs, zw.outBuf) + ensureNoError("ZSTD_endStream", result) + if err := zw.flushOutBuf(); err != nil { + return err + } + if result == 0 { + return nil + } + } +} diff --git a/vendor/github.com/valyala/gozstd/zdict.h b/vendor/github.com/valyala/gozstd/zdict.h new file mode 100644 index 000000000..e22973173 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/zdict.h @@ -0,0 +1,277 @@ +/* + * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under both the BSD-style license (found in the + * LICENSE file in the root directory of this source tree) and the GPLv2 (found + * in the COPYING file in the root directory of this source tree). + * You may select, at your option, one of the above-listed licenses. + */ + +#ifndef DICTBUILDER_H_001 +#define DICTBUILDER_H_001 + +#if defined (__cplusplus) +extern "C" { +#endif + + +/*====== Dependencies ======*/ +#include /* size_t */ + + +/* ===== ZDICTLIB_API : control library symbols visibility ===== */ +#ifndef ZDICTLIB_VISIBILITY +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define ZDICTLIB_VISIBILITY __attribute__ ((visibility ("default"))) +# else +# define ZDICTLIB_VISIBILITY +# endif +#endif +#if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) +# define ZDICTLIB_API __declspec(dllexport) ZDICTLIB_VISIBILITY +#elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) +# define ZDICTLIB_API __declspec(dllimport) ZDICTLIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ +#else +# define ZDICTLIB_API ZDICTLIB_VISIBILITY +#endif + + +/*! ZDICT_trainFromBuffer(): + * Train a dictionary from an array of samples. + * Redirect towards ZDICT_optimizeTrainFromBuffer_fastCover() single-threaded, with d=8, steps=4, + * f=20, and accel=1. + * Samples must be stored concatenated in a single flat buffer `samplesBuffer`, + * supplied with an array of sizes `samplesSizes`, providing the size of each sample, in order. + * The resulting dictionary will be saved into `dictBuffer`. + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`) + * or an error code, which can be tested with ZDICT_isError(). + * Note: Dictionary training will fail if there are not enough samples to construct a + * dictionary, or if most of the samples are too small (< 8 bytes being the lower limit). + * If dictionary training fails, you should use zstd without a dictionary, as the dictionary + * would've been ineffective anyways. If you believe your samples would benefit from a dictionary + * please open an issue with details, and we can look into it. + * Note: ZDICT_trainFromBuffer()'s memory usage is about 6 MB. + * Tips: In general, a reasonable dictionary has a size of ~ 100 KB. + * It's possible to select smaller or larger size, just by specifying `dictBufferCapacity`. + * In general, it's recommended to provide a few thousands samples, though this can vary a lot. + * It's recommended that total size of all samples be about ~x100 times the target size of dictionary. + */ +ZDICTLIB_API size_t ZDICT_trainFromBuffer(void* dictBuffer, size_t dictBufferCapacity, + const void* samplesBuffer, + const size_t* samplesSizes, unsigned nbSamples); + + +/*====== Helper functions ======*/ +ZDICTLIB_API unsigned ZDICT_getDictID(const void* dictBuffer, size_t dictSize); /**< extracts dictID; @return zero if error (not a valid dictionary) */ +ZDICTLIB_API unsigned ZDICT_isError(size_t errorCode); +ZDICTLIB_API const char* ZDICT_getErrorName(size_t errorCode); + + + +#ifdef ZDICT_STATIC_LINKING_ONLY + +/* ==================================================================================== + * The definitions in this section are considered experimental. + * They should never be used with a dynamic library, as they may change in the future. + * They are provided for advanced usages. + * Use them only in association with static linking. + * ==================================================================================== */ + +typedef struct { + int compressionLevel; /* optimize for a specific zstd compression level; 0 means default */ + unsigned notificationLevel; /* Write log to stderr; 0 = none (default); 1 = errors; 2 = progression; 3 = details; 4 = debug; */ + unsigned dictID; /* force dictID value; 0 means auto mode (32-bits random value) */ +} ZDICT_params_t; + +/*! ZDICT_cover_params_t: + * k and d are the only required parameters. + * For others, value 0 means default. + */ +typedef struct { + unsigned k; /* Segment size : constraint: 0 < k : Reasonable range [16, 2048+] */ + unsigned d; /* dmer size : constraint: 0 < d <= k : Reasonable range [6, 16] */ + unsigned steps; /* Number of steps : Only used for optimization : 0 means default (40) : Higher means more parameters checked */ + unsigned nbThreads; /* Number of threads : constraint: 0 < nbThreads : 1 means single-threaded : Only used for optimization : Ignored if ZSTD_MULTITHREAD is not defined */ + double splitPoint; /* Percentage of samples used for training: Only used for optimization : the first nbSamples * splitPoint samples will be used to training, the last nbSamples * (1 - splitPoint) samples will be used for testing, 0 means default (1.0), 1.0 when all samples are used for both training and testing */ + ZDICT_params_t zParams; +} ZDICT_cover_params_t; + +typedef struct { + unsigned k; /* Segment size : constraint: 0 < k : Reasonable range [16, 2048+] */ + unsigned d; /* dmer size : constraint: 0 < d <= k : Reasonable range [6, 16] */ + unsigned f; /* log of size of frequency array : constraint: 0 < f <= 31 : 1 means default(20)*/ + unsigned steps; /* Number of steps : Only used for optimization : 0 means default (40) : Higher means more parameters checked */ + unsigned nbThreads; /* Number of threads : constraint: 0 < nbThreads : 1 means single-threaded : Only used for optimization : Ignored if ZSTD_MULTITHREAD is not defined */ + double splitPoint; /* Percentage of samples used for training: Only used for optimization : the first nbSamples * splitPoint samples will be used to training, the last nbSamples * (1 - splitPoint) samples will be used for testing, 0 means default (0.75), 1.0 when all samples are used for both training and testing */ + unsigned accel; /* Acceleration level: constraint: 0 < accel <= 10, higher means faster and less accurate, 0 means default(1) */ + ZDICT_params_t zParams; +} ZDICT_fastCover_params_t; + +/*! ZDICT_trainFromBuffer_cover(): + * Train a dictionary from an array of samples using the COVER algorithm. + * Samples must be stored concatenated in a single flat buffer `samplesBuffer`, + * supplied with an array of sizes `samplesSizes`, providing the size of each sample, in order. + * The resulting dictionary will be saved into `dictBuffer`. + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`) + * or an error code, which can be tested with ZDICT_isError(). + * See ZDICT_trainFromBuffer() for details on failure modes. + * Note: ZDICT_trainFromBuffer_cover() requires about 9 bytes of memory for each input byte. + * Tips: In general, a reasonable dictionary has a size of ~ 100 KB. + * It's possible to select smaller or larger size, just by specifying `dictBufferCapacity`. + * In general, it's recommended to provide a few thousands samples, though this can vary a lot. + * It's recommended that total size of all samples be about ~x100 times the target size of dictionary. + */ +ZDICTLIB_API size_t ZDICT_trainFromBuffer_cover( + void *dictBuffer, size_t dictBufferCapacity, + const void *samplesBuffer, const size_t *samplesSizes, unsigned nbSamples, + ZDICT_cover_params_t parameters); + +/*! ZDICT_optimizeTrainFromBuffer_cover(): + * The same requirements as above hold for all the parameters except `parameters`. + * This function tries many parameter combinations and picks the best parameters. + * `*parameters` is filled with the best parameters found, + * dictionary constructed with those parameters is stored in `dictBuffer`. + * + * All of the parameters d, k, steps are optional. + * If d is non-zero then we don't check multiple values of d, otherwise we check d = {6, 8}. + * if steps is zero it defaults to its default value. + * If k is non-zero then we don't check multiple values of k, otherwise we check steps values in [50, 2000]. + * + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`) + * or an error code, which can be tested with ZDICT_isError(). + * On success `*parameters` contains the parameters selected. + * See ZDICT_trainFromBuffer() for details on failure modes. + * Note: ZDICT_optimizeTrainFromBuffer_cover() requires about 8 bytes of memory for each input byte and additionally another 5 bytes of memory for each byte of memory for each thread. + */ +ZDICTLIB_API size_t ZDICT_optimizeTrainFromBuffer_cover( + void* dictBuffer, size_t dictBufferCapacity, + const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples, + ZDICT_cover_params_t* parameters); + +/*! ZDICT_trainFromBuffer_fastCover(): + * Train a dictionary from an array of samples using a modified version of COVER algorithm. + * Samples must be stored concatenated in a single flat buffer `samplesBuffer`, + * supplied with an array of sizes `samplesSizes`, providing the size of each sample, in order. + * d and k are required. + * All other parameters are optional, will use default values if not provided + * The resulting dictionary will be saved into `dictBuffer`. + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`) + * or an error code, which can be tested with ZDICT_isError(). + * See ZDICT_trainFromBuffer() for details on failure modes. + * Note: ZDICT_trainFromBuffer_fastCover() requires 6 * 2^f bytes of memory. + * Tips: In general, a reasonable dictionary has a size of ~ 100 KB. + * It's possible to select smaller or larger size, just by specifying `dictBufferCapacity`. + * In general, it's recommended to provide a few thousands samples, though this can vary a lot. + * It's recommended that total size of all samples be about ~x100 times the target size of dictionary. + */ +ZDICTLIB_API size_t ZDICT_trainFromBuffer_fastCover(void *dictBuffer, + size_t dictBufferCapacity, const void *samplesBuffer, + const size_t *samplesSizes, unsigned nbSamples, + ZDICT_fastCover_params_t parameters); + +/*! ZDICT_optimizeTrainFromBuffer_fastCover(): + * The same requirements as above hold for all the parameters except `parameters`. + * This function tries many parameter combinations (specifically, k and d combinations) + * and picks the best parameters. `*parameters` is filled with the best parameters found, + * dictionary constructed with those parameters is stored in `dictBuffer`. + * All of the parameters d, k, steps, f, and accel are optional. + * If d is non-zero then we don't check multiple values of d, otherwise we check d = {6, 8}. + * if steps is zero it defaults to its default value. + * If k is non-zero then we don't check multiple values of k, otherwise we check steps values in [50, 2000]. + * If f is zero, default value of 20 is used. + * If accel is zero, default value of 1 is used. + * + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`) + * or an error code, which can be tested with ZDICT_isError(). + * On success `*parameters` contains the parameters selected. + * See ZDICT_trainFromBuffer() for details on failure modes. + * Note: ZDICT_optimizeTrainFromBuffer_fastCover() requires about 6 * 2^f bytes of memory for each thread. + */ +ZDICTLIB_API size_t ZDICT_optimizeTrainFromBuffer_fastCover(void* dictBuffer, + size_t dictBufferCapacity, const void* samplesBuffer, + const size_t* samplesSizes, unsigned nbSamples, + ZDICT_fastCover_params_t* parameters); + +/*! ZDICT_finalizeDictionary(): + * Given a custom content as a basis for dictionary, and a set of samples, + * finalize dictionary by adding headers and statistics. + * + * Samples must be stored concatenated in a flat buffer `samplesBuffer`, + * supplied with an array of sizes `samplesSizes`, providing the size of each sample in order. + * + * dictContentSize must be >= ZDICT_CONTENTSIZE_MIN bytes. + * maxDictSize must be >= dictContentSize, and must be >= ZDICT_DICTSIZE_MIN bytes. + * + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`), + * or an error code, which can be tested by ZDICT_isError(). + * Note: ZDICT_finalizeDictionary() will push notifications into stderr if instructed to, using notificationLevel>0. + * Note 2: dictBuffer and dictContent can overlap + */ +#define ZDICT_CONTENTSIZE_MIN 128 +#define ZDICT_DICTSIZE_MIN 256 +ZDICTLIB_API size_t ZDICT_finalizeDictionary(void* dictBuffer, size_t dictBufferCapacity, + const void* dictContent, size_t dictContentSize, + const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples, + ZDICT_params_t parameters); + +typedef struct { + unsigned selectivityLevel; /* 0 means default; larger => select more => larger dictionary */ + ZDICT_params_t zParams; +} ZDICT_legacy_params_t; + +/*! ZDICT_trainFromBuffer_legacy(): + * Train a dictionary from an array of samples. + * Samples must be stored concatenated in a single flat buffer `samplesBuffer`, + * supplied with an array of sizes `samplesSizes`, providing the size of each sample, in order. + * The resulting dictionary will be saved into `dictBuffer`. + * `parameters` is optional and can be provided with values set to 0 to mean "default". + * @return: size of dictionary stored into `dictBuffer` (<= `dictBufferCapacity`) + * or an error code, which can be tested with ZDICT_isError(). + * See ZDICT_trainFromBuffer() for details on failure modes. + * Tips: In general, a reasonable dictionary has a size of ~ 100 KB. + * It's possible to select smaller or larger size, just by specifying `dictBufferCapacity`. + * In general, it's recommended to provide a few thousands samples, though this can vary a lot. + * It's recommended that total size of all samples be about ~x100 times the target size of dictionary. + * Note: ZDICT_trainFromBuffer_legacy() will send notifications into stderr if instructed to, using notificationLevel>0. + */ +ZDICTLIB_API size_t ZDICT_trainFromBuffer_legacy( + void *dictBuffer, size_t dictBufferCapacity, + const void *samplesBuffer, const size_t *samplesSizes, unsigned nbSamples, + ZDICT_legacy_params_t parameters); + +/* Deprecation warnings */ +/* It is generally possible to disable deprecation warnings from compiler, + for example with -Wno-deprecated-declarations for gcc + or _CRT_SECURE_NO_WARNINGS in Visual. + Otherwise, it's also possible to manually define ZDICT_DISABLE_DEPRECATE_WARNINGS */ +#ifdef ZDICT_DISABLE_DEPRECATE_WARNINGS +# define ZDICT_DEPRECATED(message) ZDICTLIB_API /* disable deprecation warnings */ +#else +# define ZDICT_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) +# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ +# define ZDICT_DEPRECATED(message) [[deprecated(message)]] ZDICTLIB_API +# elif (ZDICT_GCC_VERSION >= 405) || defined(__clang__) +# define ZDICT_DEPRECATED(message) ZDICTLIB_API __attribute__((deprecated(message))) +# elif (ZDICT_GCC_VERSION >= 301) +# define ZDICT_DEPRECATED(message) ZDICTLIB_API __attribute__((deprecated)) +# elif defined(_MSC_VER) +# define ZDICT_DEPRECATED(message) ZDICTLIB_API __declspec(deprecated(message)) +# else +# pragma message("WARNING: You need to implement ZDICT_DEPRECATED for this compiler") +# define ZDICT_DEPRECATED(message) ZDICTLIB_API +# endif +#endif /* ZDICT_DISABLE_DEPRECATE_WARNINGS */ + +ZDICT_DEPRECATED("use ZDICT_finalizeDictionary() instead") +size_t ZDICT_addEntropyTablesFromBuffer(void* dictBuffer, size_t dictContentSize, size_t dictBufferCapacity, + const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples); + + +#endif /* ZDICT_STATIC_LINKING_ONLY */ + +#if defined (__cplusplus) +} +#endif + +#endif /* DICTBUILDER_H_001 */ diff --git a/vendor/github.com/valyala/gozstd/zstd.h b/vendor/github.com/valyala/gozstd/zstd.h new file mode 100644 index 000000000..53470c18f --- /dev/null +++ b/vendor/github.com/valyala/gozstd/zstd.h @@ -0,0 +1,1913 @@ +/* + * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under both the BSD-style license (found in the + * LICENSE file in the root directory of this source tree) and the GPLv2 (found + * in the COPYING file in the root directory of this source tree). + * You may select, at your option, one of the above-listed licenses. + */ +#if defined (__cplusplus) +extern "C" { +#endif + +#ifndef ZSTD_H_235446 +#define ZSTD_H_235446 + +/* ====== Dependency ======*/ +#include /* size_t */ + + +/* ===== ZSTDLIB_API : control library symbols visibility ===== */ +#ifndef ZSTDLIB_VISIBILITY +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define ZSTDLIB_VISIBILITY __attribute__ ((visibility ("default"))) +# else +# define ZSTDLIB_VISIBILITY +# endif +#endif +#if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) +# define ZSTDLIB_API __declspec(dllexport) ZSTDLIB_VISIBILITY +#elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) +# define ZSTDLIB_API __declspec(dllimport) ZSTDLIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ +#else +# define ZSTDLIB_API ZSTDLIB_VISIBILITY +#endif + + +/******************************************************************************* + Introduction + + zstd, short for Zstandard, is a fast lossless compression algorithm, targeting + real-time compression scenarios at zlib-level and better compression ratios. + The zstd compression library provides in-memory compression and decompression + functions. + + The library supports regular compression levels from 1 up to ZSTD_maxCLevel(), + which is currently 22. Levels >= 20, labeled `--ultra`, should be used with + caution, as they require more memory. The library also offers negative + compression levels, which extend the range of speed vs. ratio preferences. + The lower the level, the faster the speed (at the cost of compression). + + Compression can be done in: + - a single step (described as Simple API) + - a single step, reusing a context (described as Explicit context) + - unbounded multiple steps (described as Streaming compression) + + The compression ratio achievable on small data can be highly improved using + a dictionary. Dictionary compression can be performed in: + - a single step (described as Simple dictionary API) + - a single step, reusing a dictionary (described as Bulk-processing + dictionary API) + + Advanced experimental functions can be accessed using + `#define ZSTD_STATIC_LINKING_ONLY` before including zstd.h. + + Advanced experimental APIs should never be used with a dynamically-linked + library. They are not "stable"; their definitions or signatures may change in + the future. Only static linking is allowed. +*******************************************************************************/ + +/*------ Version ------*/ +#define ZSTD_VERSION_MAJOR 1 +#define ZSTD_VERSION_MINOR 4 +#define ZSTD_VERSION_RELEASE 0 + +#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE) +ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< to check runtime library version */ + +#define ZSTD_LIB_VERSION ZSTD_VERSION_MAJOR.ZSTD_VERSION_MINOR.ZSTD_VERSION_RELEASE +#define ZSTD_QUOTE(str) #str +#define ZSTD_EXPAND_AND_QUOTE(str) ZSTD_QUOTE(str) +#define ZSTD_VERSION_STRING ZSTD_EXPAND_AND_QUOTE(ZSTD_LIB_VERSION) +ZSTDLIB_API const char* ZSTD_versionString(void); /* requires v1.3.0+ */ + +/*************************************** +* Default constant +***************************************/ +#ifndef ZSTD_CLEVEL_DEFAULT +# define ZSTD_CLEVEL_DEFAULT 3 +#endif + +/*************************************** +* Constants +***************************************/ + +/* All magic numbers are supposed read/written to/from files/memory using little-endian convention */ +#define ZSTD_MAGICNUMBER 0xFD2FB528 /* valid since v0.8.0 */ +#define ZSTD_MAGIC_DICTIONARY 0xEC30A437 /* valid since v0.7.0 */ +#define ZSTD_MAGIC_SKIPPABLE_START 0x184D2A50 /* all 16 values, from 0x184D2A50 to 0x184D2A5F, signal the beginning of a skippable frame */ +#define ZSTD_MAGIC_SKIPPABLE_MASK 0xFFFFFFF0 + +#define ZSTD_BLOCKSIZELOG_MAX 17 +#define ZSTD_BLOCKSIZE_MAX (1<= `ZSTD_compressBound(srcSize)`. + * @return : compressed size written into `dst` (<= `dstCapacity), + * or an error code if it fails (which can be tested using ZSTD_isError()). */ +ZSTDLIB_API size_t ZSTD_compress( void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + int compressionLevel); + +/*! ZSTD_decompress() : + * `compressedSize` : must be the _exact_ size of some number of compressed and/or skippable frames. + * `dstCapacity` is an upper bound of originalSize to regenerate. + * If user cannot imply a maximum upper bound, it's better to use streaming mode to decompress data. + * @return : the number of bytes decompressed into `dst` (<= `dstCapacity`), + * or an errorCode if it fails (which can be tested using ZSTD_isError()). */ +ZSTDLIB_API size_t ZSTD_decompress( void* dst, size_t dstCapacity, + const void* src, size_t compressedSize); + +/*! ZSTD_getFrameContentSize() : requires v1.3.0+ + * `src` should point to the start of a ZSTD encoded frame. + * `srcSize` must be at least as large as the frame header. + * hint : any size >= `ZSTD_frameHeaderSize_max` is large enough. + * @return : - decompressed size of `src` frame content, if known + * - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined + * - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) + * note 1 : a 0 return value means the frame is valid but "empty". + * note 2 : decompressed size is an optional field, it may not be present, typically in streaming mode. + * When `return==ZSTD_CONTENTSIZE_UNKNOWN`, data to decompress could be any size. + * In which case, it's necessary to use streaming mode to decompress data. + * Optionally, application can rely on some implicit limit, + * as ZSTD_decompress() only needs an upper bound of decompressed size. + * (For example, data could be necessarily cut into blocks <= 16 KB). + * note 3 : decompressed size is always present when compression is completed using single-pass functions, + * such as ZSTD_compress(), ZSTD_compressCCtx() ZSTD_compress_usingDict() or ZSTD_compress_usingCDict(). + * note 4 : decompressed size can be very large (64-bits value), + * potentially larger than what local system can handle as a single memory segment. + * In which case, it's necessary to use streaming mode to decompress data. + * note 5 : If source is untrusted, decompressed size could be wrong or intentionally modified. + * Always ensure return value fits within application's authorized limits. + * Each application can set its own limits. + * note 6 : This function replaces ZSTD_getDecompressedSize() */ +#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1) +#define ZSTD_CONTENTSIZE_ERROR (0ULL - 2) +ZSTDLIB_API unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); + +/*! ZSTD_getDecompressedSize() : + * NOTE: This function is now obsolete, in favor of ZSTD_getFrameContentSize(). + * Both functions work the same way, but ZSTD_getDecompressedSize() blends + * "empty", "unknown" and "error" results to the same return value (0), + * while ZSTD_getFrameContentSize() gives them separate return values. + * @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise. */ +ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize); + +/*! ZSTD_findFrameCompressedSize() : + * `src` should point to the start of a ZSTD frame or skippable frame. + * `srcSize` must be >= first frame size + * @return : the compressed size of the first frame starting at `src`, + * suitable to pass as `srcSize` to `ZSTD_decompress` or similar, + * or an error code if input is invalid */ +ZSTDLIB_API size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize); + + +/*====== Helper functions ======*/ +#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < (128<<10)) ? (((128<<10) - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */ +ZSTDLIB_API size_t ZSTD_compressBound(size_t srcSize); /*!< maximum compressed size in worst case single-pass scenario */ +ZSTDLIB_API unsigned ZSTD_isError(size_t code); /*!< tells if a `size_t` function result is an error code */ +ZSTDLIB_API const char* ZSTD_getErrorName(size_t code); /*!< provides readable string from an error code */ +ZSTDLIB_API int ZSTD_minCLevel(void); /*!< minimum negative compression level allowed */ +ZSTDLIB_API int ZSTD_maxCLevel(void); /*!< maximum compression level available */ + + +/*************************************** +* Explicit context +***************************************/ +/*= Compression context + * When compressing many times, + * it is recommended to allocate a context just once, and re-use it for each successive compression operation. + * This will make workload friendlier for system's memory. + * Use one context per thread for parallel execution in multi-threaded environments. */ +typedef struct ZSTD_CCtx_s ZSTD_CCtx; +ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx(void); +ZSTDLIB_API size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); + +/*! ZSTD_compressCCtx() : + * Same as ZSTD_compress(), using an explicit ZSTD_CCtx + * The function will compress at requested compression level, + * ignoring any other parameter */ +ZSTDLIB_API size_t ZSTD_compressCCtx(ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + int compressionLevel); + +/*= Decompression context + * When decompressing many times, + * it is recommended to allocate a context only once, + * and re-use it for each successive compression operation. + * This will make workload friendlier for system's memory. + * Use one context per thread for parallel execution. */ +typedef struct ZSTD_DCtx_s ZSTD_DCtx; +ZSTDLIB_API ZSTD_DCtx* ZSTD_createDCtx(void); +ZSTDLIB_API size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); + +/*! ZSTD_decompressDCtx() : + * Same as ZSTD_decompress(), + * requires an allocated ZSTD_DCtx. + * Compatible with sticky parameters. + */ +ZSTDLIB_API size_t ZSTD_decompressDCtx(ZSTD_DCtx* dctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize); + + +/*************************************** +* Advanced compression API +***************************************/ + +/* API design : + * Parameters are pushed one by one into an existing context, + * using ZSTD_CCtx_set*() functions. + * Pushed parameters are sticky : they are valid for next compressed frame, and any subsequent frame. + * "sticky" parameters are applicable to `ZSTD_compress2()` and `ZSTD_compressStream*()` ! + * They do not apply to "simple" one-shot variants such as ZSTD_compressCCtx() + * + * It's possible to reset all parameters to "default" using ZSTD_CCtx_reset(). + * + * This API supercedes all other "advanced" API entry points in the experimental section. + * In the future, we expect to remove from experimental API entry points which are redundant with this API. + */ + + +/* Compression strategies, listed from fastest to strongest */ +typedef enum { ZSTD_fast=1, + ZSTD_dfast=2, + ZSTD_greedy=3, + ZSTD_lazy=4, + ZSTD_lazy2=5, + ZSTD_btlazy2=6, + ZSTD_btopt=7, + ZSTD_btultra=8, + ZSTD_btultra2=9 + /* note : new strategies _might_ be added in the future. + Only the order (from fast to strong) is guaranteed */ +} ZSTD_strategy; + + +typedef enum { + + /* compression parameters + * Note: When compressing with a ZSTD_CDict these parameters are superseded + * by the parameters used to construct the ZSTD_CDict. See ZSTD_CCtx_refCDict() + * for more info (superseded-by-cdict). */ + ZSTD_c_compressionLevel=100, /* Update all compression parameters according to pre-defined cLevel table + * Default level is ZSTD_CLEVEL_DEFAULT==3. + * Special: value 0 means default, which is controlled by ZSTD_CLEVEL_DEFAULT. + * Note 1 : it's possible to pass a negative compression level. + * Note 2 : setting a level sets all default values of other compression parameters */ + ZSTD_c_windowLog=101, /* Maximum allowed back-reference distance, expressed as power of 2. + * Must be clamped between ZSTD_WINDOWLOG_MIN and ZSTD_WINDOWLOG_MAX. + * Special: value 0 means "use default windowLog". + * Note: Using a windowLog greater than ZSTD_WINDOWLOG_LIMIT_DEFAULT + * requires explicitly allowing such window size at decompression stage if using streaming. */ + ZSTD_c_hashLog=102, /* Size of the initial probe table, as a power of 2. + * Resulting memory usage is (1 << (hashLog+2)). + * Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX. + * Larger tables improve compression ratio of strategies <= dFast, + * and improve speed of strategies > dFast. + * Special: value 0 means "use default hashLog". */ + ZSTD_c_chainLog=103, /* Size of the multi-probe search table, as a power of 2. + * Resulting memory usage is (1 << (chainLog+2)). + * Must be clamped between ZSTD_CHAINLOG_MIN and ZSTD_CHAINLOG_MAX. + * Larger tables result in better and slower compression. + * This parameter is useless when using "fast" strategy. + * It's still useful when using "dfast" strategy, + * in which case it defines a secondary probe table. + * Special: value 0 means "use default chainLog". */ + ZSTD_c_searchLog=104, /* Number of search attempts, as a power of 2. + * More attempts result in better and slower compression. + * This parameter is useless when using "fast" and "dFast" strategies. + * Special: value 0 means "use default searchLog". */ + ZSTD_c_minMatch=105, /* Minimum size of searched matches. + * Note that Zstandard can still find matches of smaller size, + * it just tweaks its search algorithm to look for this size and larger. + * Larger values increase compression and decompression speed, but decrease ratio. + * Must be clamped between ZSTD_MINMATCH_MIN and ZSTD_MINMATCH_MAX. + * Note that currently, for all strategies < btopt, effective minimum is 4. + * , for all strategies > fast, effective maximum is 6. + * Special: value 0 means "use default minMatchLength". */ + ZSTD_c_targetLength=106, /* Impact of this field depends on strategy. + * For strategies btopt, btultra & btultra2: + * Length of Match considered "good enough" to stop search. + * Larger values make compression stronger, and slower. + * For strategy fast: + * Distance between match sampling. + * Larger values make compression faster, and weaker. + * Special: value 0 means "use default targetLength". */ + ZSTD_c_strategy=107, /* See ZSTD_strategy enum definition. + * The higher the value of selected strategy, the more complex it is, + * resulting in stronger and slower compression. + * Special: value 0 means "use default strategy". */ + + /* LDM mode parameters */ + ZSTD_c_enableLongDistanceMatching=160, /* Enable long distance matching. + * This parameter is designed to improve compression ratio + * for large inputs, by finding large matches at long distance. + * It increases memory usage and window size. + * Note: enabling this parameter increases default ZSTD_c_windowLog to 128 MB + * except when expressly set to a different value. */ + ZSTD_c_ldmHashLog=161, /* Size of the table for long distance matching, as a power of 2. + * Larger values increase memory usage and compression ratio, + * but decrease compression speed. + * Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX + * default: windowlog - 7. + * Special: value 0 means "automatically determine hashlog". */ + ZSTD_c_ldmMinMatch=162, /* Minimum match size for long distance matcher. + * Larger/too small values usually decrease compression ratio. + * Must be clamped between ZSTD_LDM_MINMATCH_MIN and ZSTD_LDM_MINMATCH_MAX. + * Special: value 0 means "use default value" (default: 64). */ + ZSTD_c_ldmBucketSizeLog=163, /* Log size of each bucket in the LDM hash table for collision resolution. + * Larger values improve collision resolution but decrease compression speed. + * The maximum value is ZSTD_LDM_BUCKETSIZELOG_MAX. + * Special: value 0 means "use default value" (default: 3). */ + ZSTD_c_ldmHashRateLog=164, /* Frequency of inserting/looking up entries into the LDM hash table. + * Must be clamped between 0 and (ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN). + * Default is MAX(0, (windowLog - ldmHashLog)), optimizing hash table usage. + * Larger values improve compression speed. + * Deviating far from default value will likely result in a compression ratio decrease. + * Special: value 0 means "automatically determine hashRateLog". */ + + /* frame parameters */ + ZSTD_c_contentSizeFlag=200, /* Content size will be written into frame header _whenever known_ (default:1) + * Content size must be known at the beginning of compression. + * This is automatically the case when using ZSTD_compress2(), + * For streaming variants, content size must be provided with ZSTD_CCtx_setPledgedSrcSize() */ + ZSTD_c_checksumFlag=201, /* A 32-bits checksum of content is written at end of frame (default:0) */ + ZSTD_c_dictIDFlag=202, /* When applicable, dictionary's ID is written into frame header (default:1) */ + + /* multi-threading parameters */ + /* These parameters are only useful if multi-threading is enabled (compiled with build macro ZSTD_MULTITHREAD). + * They return an error otherwise. */ + ZSTD_c_nbWorkers=400, /* Select how many threads will be spawned to compress in parallel. + * When nbWorkers >= 1, triggers asynchronous mode when used with ZSTD_compressStream*() : + * ZSTD_compressStream*() consumes input and flush output if possible, but immediately gives back control to caller, + * while compression work is performed in parallel, within worker threads. + * (note : a strong exception to this rule is when first invocation of ZSTD_compressStream2() sets ZSTD_e_end : + * in which case, ZSTD_compressStream2() delegates to ZSTD_compress2(), which is always a blocking call). + * More workers improve speed, but also increase memory usage. + * Default value is `0`, aka "single-threaded mode" : no worker is spawned, compression is performed inside Caller's thread, all invocations are blocking */ + ZSTD_c_jobSize=401, /* Size of a compression job. This value is enforced only when nbWorkers >= 1. + * Each compression job is completed in parallel, so this value can indirectly impact the nb of active threads. + * 0 means default, which is dynamically determined based on compression parameters. + * Job size must be a minimum of overlap size, or 1 MB, whichever is largest. + * The minimum size is automatically and transparently enforced */ + ZSTD_c_overlapLog=402, /* Control the overlap size, as a fraction of window size. + * The overlap size is an amount of data reloaded from previous job at the beginning of a new job. + * It helps preserve compression ratio, while each job is compressed in parallel. + * This value is enforced only when nbWorkers >= 1. + * Larger values increase compression ratio, but decrease speed. + * Possible values range from 0 to 9 : + * - 0 means "default" : value will be determined by the library, depending on strategy + * - 1 means "no overlap" + * - 9 means "full overlap", using a full window size. + * Each intermediate rank increases/decreases load size by a factor 2 : + * 9: full window; 8: w/2; 7: w/4; 6: w/8; 5:w/16; 4: w/32; 3:w/64; 2:w/128; 1:no overlap; 0:default + * default value varies between 6 and 9, depending on strategy */ + + /* note : additional experimental parameters are also available + * within the experimental section of the API. + * At the time of this writing, they include : + * ZSTD_c_rsyncable + * ZSTD_c_format + * ZSTD_c_forceMaxWindow + * ZSTD_c_forceAttachDict + * ZSTD_c_literalCompressionMode + * Because they are not stable, it's necessary to define ZSTD_STATIC_LINKING_ONLY to access them. + * note : never ever use experimentalParam? names directly; + * also, the enums values themselves are unstable and can still change. + */ + ZSTD_c_experimentalParam1=500, + ZSTD_c_experimentalParam2=10, + ZSTD_c_experimentalParam3=1000, + ZSTD_c_experimentalParam4=1001, + ZSTD_c_experimentalParam5=1002, +} ZSTD_cParameter; + +typedef struct { + size_t error; + int lowerBound; + int upperBound; +} ZSTD_bounds; + +/*! ZSTD_cParam_getBounds() : + * All parameters must belong to an interval with lower and upper bounds, + * otherwise they will either trigger an error or be automatically clamped. + * @return : a structure, ZSTD_bounds, which contains + * - an error status field, which must be tested using ZSTD_isError() + * - lower and upper bounds, both inclusive + */ +ZSTDLIB_API ZSTD_bounds ZSTD_cParam_getBounds(ZSTD_cParameter cParam); + +/*! ZSTD_CCtx_setParameter() : + * Set one compression parameter, selected by enum ZSTD_cParameter. + * All parameters have valid bounds. Bounds can be queried using ZSTD_cParam_getBounds(). + * Providing a value beyond bound will either clamp it, or trigger an error (depending on parameter). + * Setting a parameter is generally only possible during frame initialization (before starting compression). + * Exception : when using multi-threading mode (nbWorkers >= 1), + * the following parameters can be updated _during_ compression (within same frame): + * => compressionLevel, hashLog, chainLog, searchLog, minMatch, targetLength and strategy. + * new parameters will be active for next job only (after a flush()). + * @return : an error code (which can be tested using ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value); + +/*! ZSTD_CCtx_setPledgedSrcSize() : + * Total input data size to be compressed as a single frame. + * Value will be written in frame header, unless if explicitly forbidden using ZSTD_c_contentSizeFlag. + * This value will also be controlled at end of frame, and trigger an error if not respected. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Note 1 : pledgedSrcSize==0 actually means zero, aka an empty frame. + * In order to mean "unknown content size", pass constant ZSTD_CONTENTSIZE_UNKNOWN. + * ZSTD_CONTENTSIZE_UNKNOWN is default value for any new frame. + * Note 2 : pledgedSrcSize is only valid once, for the next frame. + * It's discarded at the end of the frame, and replaced by ZSTD_CONTENTSIZE_UNKNOWN. + * Note 3 : Whenever all input data is provided and consumed in a single round, + * for example with ZSTD_compress2(), + * or invoking immediately ZSTD_compressStream2(,,,ZSTD_e_end), + * this value is automatically overridden by srcSize instead. + */ +ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); + +typedef enum { + ZSTD_reset_session_only = 1, + ZSTD_reset_parameters = 2, + ZSTD_reset_session_and_parameters = 3 +} ZSTD_ResetDirective; + +/*! ZSTD_CCtx_reset() : + * There are 2 different things that can be reset, independently or jointly : + * - The session : will stop compressing current frame, and make CCtx ready to start a new one. + * Useful after an error, or to interrupt any ongoing compression. + * Any internal data not yet flushed is cancelled. + * Compression parameters and dictionary remain unchanged. + * They will be used to compress next frame. + * Resetting session never fails. + * - The parameters : changes all parameters back to "default". + * This removes any reference to any dictionary too. + * Parameters can only be changed between 2 sessions (i.e. no compression is currently ongoing) + * otherwise the reset fails, and function returns an error value (which can be tested using ZSTD_isError()) + * - Both : similar to resetting the session, followed by resetting parameters. + */ +ZSTDLIB_API size_t ZSTD_CCtx_reset(ZSTD_CCtx* cctx, ZSTD_ResetDirective reset); + +/*! ZSTD_compress2() : + * Behave the same as ZSTD_compressCCtx(), but compression parameters are set using the advanced API. + * ZSTD_compress2() always starts a new frame. + * Should cctx hold data from a previously unfinished frame, everything about it is forgotten. + * - Compression parameters are pushed into CCtx before starting compression, using ZSTD_CCtx_set*() + * - The function is always blocking, returns when compression is completed. + * Hint : compression runs faster if `dstCapacity` >= `ZSTD_compressBound(srcSize)`. + * @return : compressed size written into `dst` (<= `dstCapacity), + * or an error code if it fails (which can be tested using ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_compress2( ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize); + + +/*************************************** +* Advanced decompression API +***************************************/ + +/* The advanced API pushes parameters one by one into an existing DCtx context. + * Parameters are sticky, and remain valid for all following frames + * using the same DCtx context. + * It's possible to reset parameters to default values using ZSTD_DCtx_reset(). + * Note : This API is compatible with existing ZSTD_decompressDCtx() and ZSTD_decompressStream(). + * Therefore, no new decompression function is necessary. + */ + +typedef enum { + + ZSTD_d_windowLogMax=100, /* Select a size limit (in power of 2) beyond which + * the streaming API will refuse to allocate memory buffer + * in order to protect the host from unreasonable memory requirements. + * This parameter is only useful in streaming mode, since no internal buffer is allocated in single-pass mode. + * By default, a decompression context accepts window sizes <= (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT). + * Special: value 0 means "use default maximum windowLog". */ + + /* note : additional experimental parameters are also available + * within the experimental section of the API. + * At the time of this writing, they include : + * ZSTD_c_format + * Because they are not stable, it's necessary to define ZSTD_STATIC_LINKING_ONLY to access them. + * note : never ever use experimentalParam? names directly + */ + ZSTD_d_experimentalParam1=1000 + +} ZSTD_dParameter; + +/*! ZSTD_dParam_getBounds() : + * All parameters must belong to an interval with lower and upper bounds, + * otherwise they will either trigger an error or be automatically clamped. + * @return : a structure, ZSTD_bounds, which contains + * - an error status field, which must be tested using ZSTD_isError() + * - both lower and upper bounds, inclusive + */ +ZSTDLIB_API ZSTD_bounds ZSTD_dParam_getBounds(ZSTD_dParameter dParam); + +/*! ZSTD_DCtx_setParameter() : + * Set one compression parameter, selected by enum ZSTD_dParameter. + * All parameters have valid bounds. Bounds can be queried using ZSTD_dParam_getBounds(). + * Providing a value beyond bound will either clamp it, or trigger an error (depending on parameter). + * Setting a parameter is only possible during frame initialization (before starting decompression). + * @return : 0, or an error code (which can be tested using ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_DCtx_setParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int value); + +/*! ZSTD_DCtx_reset() : + * Return a DCtx to clean state. + * Session and parameters can be reset jointly or separately. + * Parameters can only be reset when no active frame is being decompressed. + * @return : 0, or an error code, which can be tested with ZSTD_isError() + */ +ZSTDLIB_API size_t ZSTD_DCtx_reset(ZSTD_DCtx* dctx, ZSTD_ResetDirective reset); + + +/**************************** +* Streaming +****************************/ + +typedef struct ZSTD_inBuffer_s { + const void* src; /**< start of input buffer */ + size_t size; /**< size of input buffer */ + size_t pos; /**< position where reading stopped. Will be updated. Necessarily 0 <= pos <= size */ +} ZSTD_inBuffer; + +typedef struct ZSTD_outBuffer_s { + void* dst; /**< start of output buffer */ + size_t size; /**< size of output buffer */ + size_t pos; /**< position where writing stopped. Will be updated. Necessarily 0 <= pos <= size */ +} ZSTD_outBuffer; + + + +/*-*********************************************************************** +* Streaming compression - HowTo +* +* A ZSTD_CStream object is required to track streaming operation. +* Use ZSTD_createCStream() and ZSTD_freeCStream() to create/release resources. +* ZSTD_CStream objects can be reused multiple times on consecutive compression operations. +* It is recommended to re-use ZSTD_CStream since it will play nicer with system's memory, by re-using already allocated memory. +* +* For parallel execution, use one separate ZSTD_CStream per thread. +* +* note : since v1.3.0, ZSTD_CStream and ZSTD_CCtx are the same thing. +* +* Parameters are sticky : when starting a new compression on the same context, +* it will re-use the same sticky parameters as previous compression session. +* When in doubt, it's recommended to fully initialize the context before usage. +* Use ZSTD_CCtx_reset() to reset the context and ZSTD_CCtx_setParameter(), +* ZSTD_CCtx_setPledgedSrcSize(), or ZSTD_CCtx_loadDictionary() and friends to +* set more specific parameters, the pledged source size, or load a dictionary. +* +* Use ZSTD_compressStream2() with ZSTD_e_continue as many times as necessary to +* consume input stream. The function will automatically update both `pos` +* fields within `input` and `output`. +* Note that the function may not consume the entire input, for example, because +* the output buffer is already full, in which case `input.pos < input.size`. +* The caller must check if input has been entirely consumed. +* If not, the caller must make some room to receive more compressed data, +* and then present again remaining input data. +* note: ZSTD_e_continue is guaranteed to make some forward progress when called, +* but doesn't guarantee maximal forward progress. This is especially relevant +* when compressing with multiple threads. The call won't block if it can +* consume some input, but if it can't it will wait for some, but not all, +* output to be flushed. +* @return : provides a minimum amount of data remaining to be flushed from internal buffers +* or an error code, which can be tested using ZSTD_isError(). +* +* At any moment, it's possible to flush whatever data might remain stuck within internal buffer, +* using ZSTD_compressStream2() with ZSTD_e_flush. `output->pos` will be updated. +* Note that, if `output->size` is too small, a single invocation with ZSTD_e_flush might not be enough (return code > 0). +* In which case, make some room to receive more compressed data, and call again ZSTD_compressStream2() with ZSTD_e_flush. +* You must continue calling ZSTD_compressStream2() with ZSTD_e_flush until it returns 0, at which point you can change the +* operation. +* note: ZSTD_e_flush will flush as much output as possible, meaning when compressing with multiple threads, it will +* block until the flush is complete or the output buffer is full. +* @return : 0 if internal buffers are entirely flushed, +* >0 if some data still present within internal buffer (the value is minimal estimation of remaining size), +* or an error code, which can be tested using ZSTD_isError(). +* +* Calling ZSTD_compressStream2() with ZSTD_e_end instructs to finish a frame. +* It will perform a flush and write frame epilogue. +* The epilogue is required for decoders to consider a frame completed. +* flush operation is the same, and follows same rules as calling ZSTD_compressStream2() with ZSTD_e_flush. +* You must continue calling ZSTD_compressStream2() with ZSTD_e_end until it returns 0, at which point you are free to +* start a new frame. +* note: ZSTD_e_end will flush as much output as possible, meaning when compressing with multiple threads, it will +* block until the flush is complete or the output buffer is full. +* @return : 0 if frame fully completed and fully flushed, +* >0 if some data still present within internal buffer (the value is minimal estimation of remaining size), +* or an error code, which can be tested using ZSTD_isError(). +* +* *******************************************************************/ + +typedef ZSTD_CCtx ZSTD_CStream; /**< CCtx and CStream are now effectively same object (>= v1.3.0) */ + /* Continue to distinguish them for compatibility with older versions <= v1.2.0 */ +/*===== ZSTD_CStream management functions =====*/ +ZSTDLIB_API ZSTD_CStream* ZSTD_createCStream(void); +ZSTDLIB_API size_t ZSTD_freeCStream(ZSTD_CStream* zcs); + +/*===== Streaming compression functions =====*/ +typedef enum { + ZSTD_e_continue=0, /* collect more data, encoder decides when to output compressed result, for optimal compression ratio */ + ZSTD_e_flush=1, /* flush any data provided so far, + * it creates (at least) one new block, that can be decoded immediately on reception; + * frame will continue: any future data can still reference previously compressed data, improving compression. + * note : multithreaded compression will block to flush as much output as possible. */ + ZSTD_e_end=2 /* flush any remaining data _and_ close current frame. + * note that frame is only closed after compressed data is fully flushed (return value == 0). + * After that point, any additional data starts a new frame. + * note : each frame is independent (does not reference any content from previous frame). + : note : multithreaded compression will block to flush as much output as possible. */ +} ZSTD_EndDirective; + +/*! ZSTD_compressStream2() : + * Behaves about the same as ZSTD_compressStream, with additional control on end directive. + * - Compression parameters are pushed into CCtx before starting compression, using ZSTD_CCtx_set*() + * - Compression parameters cannot be changed once compression is started (save a list of exceptions in multi-threading mode) + * - output->pos must be <= dstCapacity, input->pos must be <= srcSize + * - output->pos and input->pos will be updated. They are guaranteed to remain below their respective limit. + * - When nbWorkers==0 (default), function is blocking : it completes its job before returning to caller. + * - When nbWorkers>=1, function is non-blocking : it just acquires a copy of input, and distributes jobs to internal worker threads, flush whatever is available, + * and then immediately returns, just indicating that there is some data remaining to be flushed. + * The function nonetheless guarantees forward progress : it will return only after it reads or write at least 1+ byte. + * - Exception : if the first call requests a ZSTD_e_end directive and provides enough dstCapacity, the function delegates to ZSTD_compress2() which is always blocking. + * - @return provides a minimum amount of data remaining to be flushed from internal buffers + * or an error code, which can be tested using ZSTD_isError(). + * if @return != 0, flush is not fully completed, there is still some data left within internal buffers. + * This is useful for ZSTD_e_flush, since in this case more flushes are necessary to empty all buffers. + * For ZSTD_e_end, @return == 0 when internal buffers are fully flushed and frame is completed. + * - after a ZSTD_e_end directive, if internal buffer is not fully flushed (@return != 0), + * only ZSTD_e_end or ZSTD_e_flush operations are allowed. + * Before starting a new compression job, or changing compression parameters, + * it is required to fully flush internal buffers. + */ +ZSTDLIB_API size_t ZSTD_compressStream2( ZSTD_CCtx* cctx, + ZSTD_outBuffer* output, + ZSTD_inBuffer* input, + ZSTD_EndDirective endOp); + +ZSTDLIB_API size_t ZSTD_CStreamInSize(void); /**< recommended size for input buffer */ +ZSTDLIB_API size_t ZSTD_CStreamOutSize(void); /**< recommended size for output buffer. Guarantee to successfully flush at least one complete compressed block in all circumstances. */ + +/******************************************************************************* + * This is a legacy streaming API, and can be replaced by ZSTD_CCtx_reset() and + * ZSTD_compressStream2(). It is redundant, but is still fully supported. + * Advanced parameters and dictionary compression can only be used through the + * new API. + ******************************************************************************/ + +/** + * Equivalent to: + * + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_refCDict(zcs, NULL); // clear the dictionary (if any) + * ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); + */ +ZSTDLIB_API size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel); +/** + * Alternative for ZSTD_compressStream2(zcs, output, input, ZSTD_e_continue). + * NOTE: The return value is different. ZSTD_compressStream() returns a hint for + * the next read size (if non-zero and not an error). ZSTD_compressStream2() + * returns the number of bytes left to flush (if non-zero and not an error). + */ +ZSTDLIB_API size_t ZSTD_compressStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuffer* input); +/** Equivalent to ZSTD_compressStream2(zcs, output, &emptyInput, ZSTD_e_flush). */ +ZSTDLIB_API size_t ZSTD_flushStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); +/** Equivalent to ZSTD_compressStream2(zcs, output, &emptyInput, ZSTD_e_end). */ +ZSTDLIB_API size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); + + +/*-*************************************************************************** +* Streaming decompression - HowTo +* +* A ZSTD_DStream object is required to track streaming operations. +* Use ZSTD_createDStream() and ZSTD_freeDStream() to create/release resources. +* ZSTD_DStream objects can be re-used multiple times. +* +* Use ZSTD_initDStream() to start a new decompression operation. +* @return : recommended first input size +* Alternatively, use advanced API to set specific properties. +* +* Use ZSTD_decompressStream() repetitively to consume your input. +* The function will update both `pos` fields. +* If `input.pos < input.size`, some input has not been consumed. +* It's up to the caller to present again remaining data. +* The function tries to flush all data decoded immediately, respecting output buffer size. +* If `output.pos < output.size`, decoder has flushed everything it could. +* But if `output.pos == output.size`, there might be some data left within internal buffers., +* In which case, call ZSTD_decompressStream() again to flush whatever remains in the buffer. +* Note : with no additional input provided, amount of data flushed is necessarily <= ZSTD_BLOCKSIZE_MAX. +* @return : 0 when a frame is completely decoded and fully flushed, +* or an error code, which can be tested using ZSTD_isError(), +* or any other value > 0, which means there is still some decoding or flushing to do to complete current frame : +* the return value is a suggested next input size (just a hint for better latency) +* that will never request more than the remaining frame size. +* *******************************************************************************/ + +typedef ZSTD_DCtx ZSTD_DStream; /**< DCtx and DStream are now effectively same object (>= v1.3.0) */ + /* For compatibility with versions <= v1.2.0, prefer differentiating them. */ +/*===== ZSTD_DStream management functions =====*/ +ZSTDLIB_API ZSTD_DStream* ZSTD_createDStream(void); +ZSTDLIB_API size_t ZSTD_freeDStream(ZSTD_DStream* zds); + +/*===== Streaming decompression functions =====*/ + +/* This function is redundant with the advanced API and equivalent to: + * + * ZSTD_DCtx_reset(zds); + * ZSTD_DCtx_refDDict(zds, NULL); + */ +ZSTDLIB_API size_t ZSTD_initDStream(ZSTD_DStream* zds); + +ZSTDLIB_API size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inBuffer* input); + +ZSTDLIB_API size_t ZSTD_DStreamInSize(void); /*!< recommended size for input buffer */ +ZSTDLIB_API size_t ZSTD_DStreamOutSize(void); /*!< recommended size for output buffer. Guarantee to successfully flush at least one complete block in all circumstances. */ + + +/************************** +* Simple dictionary API +***************************/ +/*! ZSTD_compress_usingDict() : + * Compression at an explicit compression level using a Dictionary. + * A dictionary can be any arbitrary data segment (also called a prefix), + * or a buffer with specified information (see dictBuilder/zdict.h). + * Note : This function loads the dictionary, resulting in significant startup delay. + * It's intended for a dictionary used only once. + * Note 2 : When `dict == NULL || dictSize < 8` no dictionary is used. */ +ZSTDLIB_API size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const void* dict,size_t dictSize, + int compressionLevel); + +/*! ZSTD_decompress_usingDict() : + * Decompression using a known Dictionary. + * Dictionary must be identical to the one used during compression. + * Note : This function loads the dictionary, resulting in significant startup delay. + * It's intended for a dictionary used only once. + * Note : When `dict == NULL || dictSize < 8` no dictionary is used. */ +ZSTDLIB_API size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const void* dict,size_t dictSize); + + +/*********************************** + * Bulk processing dictionary API + **********************************/ +typedef struct ZSTD_CDict_s ZSTD_CDict; + +/*! ZSTD_createCDict() : + * When compressing multiple messages / blocks using the same dictionary, it's recommended to load it only once. + * ZSTD_createCDict() will create a digested dictionary, ready to start future compression operations without startup cost. + * ZSTD_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only. + * `dictBuffer` can be released after ZSTD_CDict creation, because its content is copied within CDict. + * Consider experimental function `ZSTD_createCDict_byReference()` if you prefer to not duplicate `dictBuffer` content. + * Note : A ZSTD_CDict can be created from an empty dictBuffer, but it is inefficient when used to compress small data. */ +ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict(const void* dictBuffer, size_t dictSize, + int compressionLevel); + +/*! ZSTD_freeCDict() : + * Function frees memory allocated by ZSTD_createCDict(). */ +ZSTDLIB_API size_t ZSTD_freeCDict(ZSTD_CDict* CDict); + +/*! ZSTD_compress_usingCDict() : + * Compression using a digested Dictionary. + * Recommended when same dictionary is used multiple times. + * Note : compression level is _decided at dictionary creation time_, + * and frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no) */ +ZSTDLIB_API size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const ZSTD_CDict* cdict); + + +typedef struct ZSTD_DDict_s ZSTD_DDict; + +/*! ZSTD_createDDict() : + * Create a digested dictionary, ready to start decompression operation without startup delay. + * dictBuffer can be released after DDict creation, as its content is copied inside DDict. */ +ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize); + +/*! ZSTD_freeDDict() : + * Function frees memory allocated with ZSTD_createDDict() */ +ZSTDLIB_API size_t ZSTD_freeDDict(ZSTD_DDict* ddict); + +/*! ZSTD_decompress_usingDDict() : + * Decompression using a digested Dictionary. + * Recommended when same dictionary is used multiple times. */ +ZSTDLIB_API size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const ZSTD_DDict* ddict); + + +/******************************** + * Dictionary helper functions + *******************************/ + +/*! ZSTD_getDictID_fromDict() : + * Provides the dictID stored within dictionary. + * if @return == 0, the dictionary is not conformant with Zstandard specification. + * It can still be loaded, but as a content-only dictionary. */ +ZSTDLIB_API unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize); + +/*! ZSTD_getDictID_fromDDict() : + * Provides the dictID of the dictionary loaded into `ddict`. + * If @return == 0, the dictionary is not conformant to Zstandard specification, or empty. + * Non-conformant dictionaries can still be loaded, but as content-only dictionaries. */ +ZSTDLIB_API unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict); + +/*! ZSTD_getDictID_fromFrame() : + * Provides the dictID required to decompressed the frame stored within `src`. + * If @return == 0, the dictID could not be decoded. + * This could for one of the following reasons : + * - The frame does not require a dictionary to be decoded (most common case). + * - The frame was built with dictID intentionally removed. Whatever dictionary is necessary is a hidden information. + * Note : this use case also happens when using a non-conformant dictionary. + * - `srcSize` is too small, and as a result, the frame header could not be decoded (only possible if `srcSize < ZSTD_FRAMEHEADERSIZE_MAX`). + * - This is not a Zstandard frame. + * When identifying the exact failure cause, it's possible to use ZSTD_getFrameHeader(), which will provide a more precise error code. */ +ZSTDLIB_API unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); + + +/******************************************************************************* + * Advanced dictionary and prefix API + * + * This API allows dictionaries to be used with ZSTD_compress2(), + * ZSTD_compressStream2(), and ZSTD_decompress(). Dictionaries are sticky, and + * only reset with the context is reset with ZSTD_reset_parameters or + * ZSTD_reset_session_and_parameters. Prefixes are single-use. + ******************************************************************************/ + + +/*! ZSTD_CCtx_loadDictionary() : + * Create an internal CDict from `dict` buffer. + * Decompression will have to use same dictionary. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Special: Loading a NULL (or 0-size) dictionary invalidates previous dictionary, + * meaning "return to no-dictionary mode". + * Note 1 : Dictionary is sticky, it will be used for all future compressed frames. + * To return to "no-dictionary" situation, load a NULL dictionary (or reset parameters). + * Note 2 : Loading a dictionary involves building tables. + * It's also a CPU consuming operation, with non-negligible impact on latency. + * Tables are dependent on compression parameters, and for this reason, + * compression parameters can no longer be changed after loading a dictionary. + * Note 3 :`dict` content will be copied internally. + * Use experimental ZSTD_CCtx_loadDictionary_byReference() to reference content instead. + * In such a case, dictionary buffer must outlive its users. + * Note 4 : Use ZSTD_CCtx_loadDictionary_advanced() + * to precisely select how dictionary content must be interpreted. */ +ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize); + +/*! ZSTD_CCtx_refCDict() : + * Reference a prepared dictionary, to be used for all next compressed frames. + * Note that compression parameters are enforced from within CDict, + * and supersede any compression parameter previously set within CCtx. + * The parameters ignored are labled as "superseded-by-cdict" in the ZSTD_cParameter enum docs. + * The ignored parameters will be used again if the CCtx is returned to no-dictionary mode. + * The dictionary will remain valid for future compressed frames using same CCtx. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Special : Referencing a NULL CDict means "return to no-dictionary mode". + * Note 1 : Currently, only one dictionary can be managed. + * Referencing a new dictionary effectively "discards" any previous one. + * Note 2 : CDict is just referenced, its lifetime must outlive its usage within CCtx. */ +ZSTDLIB_API size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); + +/*! ZSTD_CCtx_refPrefix() : + * Reference a prefix (single-usage dictionary) for next compressed frame. + * A prefix is **only used once**. Tables are discarded at end of frame (ZSTD_e_end). + * Decompression will need same prefix to properly regenerate data. + * Compressing with a prefix is similar in outcome as performing a diff and compressing it, + * but performs much faster, especially during decompression (compression speed is tunable with compression level). + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Special: Adding any prefix (including NULL) invalidates any previous prefix or dictionary + * Note 1 : Prefix buffer is referenced. It **must** outlive compression. + * Its content must remain unmodified during compression. + * Note 2 : If the intention is to diff some large src data blob with some prior version of itself, + * ensure that the window size is large enough to contain the entire source. + * See ZSTD_c_windowLog. + * Note 3 : Referencing a prefix involves building tables, which are dependent on compression parameters. + * It's a CPU consuming operation, with non-negligible impact on latency. + * If there is a need to use the same prefix multiple times, consider loadDictionary instead. + * Note 4 : By default, the prefix is interpreted as raw content (ZSTD_dm_rawContent). + * Use experimental ZSTD_CCtx_refPrefix_advanced() to alter dictionary interpretation. */ +ZSTDLIB_API size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, + const void* prefix, size_t prefixSize); + +/*! ZSTD_DCtx_loadDictionary() : + * Create an internal DDict from dict buffer, + * to be used to decompress next frames. + * The dictionary remains valid for all future frames, until explicitly invalidated. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Special : Adding a NULL (or 0-size) dictionary invalidates any previous dictionary, + * meaning "return to no-dictionary mode". + * Note 1 : Loading a dictionary involves building tables, + * which has a non-negligible impact on CPU usage and latency. + * It's recommended to "load once, use many times", to amortize the cost + * Note 2 :`dict` content will be copied internally, so `dict` can be released after loading. + * Use ZSTD_DCtx_loadDictionary_byReference() to reference dictionary content instead. + * Note 3 : Use ZSTD_DCtx_loadDictionary_advanced() to take control of + * how dictionary content is loaded and interpreted. + */ +ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); + +/*! ZSTD_DCtx_refDDict() : + * Reference a prepared dictionary, to be used to decompress next frames. + * The dictionary remains active for decompression of future frames using same DCtx. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Note 1 : Currently, only one dictionary can be managed. + * Referencing a new dictionary effectively "discards" any previous one. + * Special: referencing a NULL DDict means "return to no-dictionary mode". + * Note 2 : DDict is just referenced, its lifetime must outlive its usage from DCtx. + */ +ZSTDLIB_API size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); + +/*! ZSTD_DCtx_refPrefix() : + * Reference a prefix (single-usage dictionary) to decompress next frame. + * This is the reverse operation of ZSTD_CCtx_refPrefix(), + * and must use the same prefix as the one used during compression. + * Prefix is **only used once**. Reference is discarded at end of frame. + * End of frame is reached when ZSTD_decompressStream() returns 0. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + * Note 1 : Adding any prefix (including NULL) invalidates any previously set prefix or dictionary + * Note 2 : Prefix buffer is referenced. It **must** outlive decompression. + * Prefix buffer must remain unmodified up to the end of frame, + * reached when ZSTD_decompressStream() returns 0. + * Note 3 : By default, the prefix is treated as raw content (ZSTD_dm_rawContent). + * Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode (Experimental section) + * Note 4 : Referencing a raw content prefix has almost no cpu nor memory cost. + * A full dictionary is more costly, as it requires building tables. + */ +ZSTDLIB_API size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, + const void* prefix, size_t prefixSize); + +/* === Memory management === */ + +/*! ZSTD_sizeof_*() : + * These functions give the _current_ memory usage of selected object. + * Note that object memory usage can evolve (increase or decrease) over time. */ +ZSTDLIB_API size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx); +ZSTDLIB_API size_t ZSTD_sizeof_DCtx(const ZSTD_DCtx* dctx); +ZSTDLIB_API size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs); +ZSTDLIB_API size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds); +ZSTDLIB_API size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict); +ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); + +#endif /* ZSTD_H_235446 */ + + +/**************************************************************************************** + * ADVANCED AND EXPERIMENTAL FUNCTIONS + **************************************************************************************** + * The definitions in the following section are considered experimental. + * They are provided for advanced scenarios. + * They should never be used with a dynamic library, as prototypes may change in the future. + * Use them only in association with static linking. + * ***************************************************************************************/ + +#if defined(ZSTD_STATIC_LINKING_ONLY) && !defined(ZSTD_H_ZSTD_STATIC_LINKING_ONLY) +#define ZSTD_H_ZSTD_STATIC_LINKING_ONLY + +/**************************************************************************************** + * experimental API (static linking only) + **************************************************************************************** + * The following symbols and constants + * are not planned to join "stable API" status in the near future. + * They can still change in future versions. + * Some of them are planned to remain in the static_only section indefinitely. + * Some of them might be removed in the future (especially when redundant with existing stable functions) + * ***************************************************************************************/ + +#define ZSTD_FRAMEHEADERSIZE_PREFIX 5 /* minimum input size required to query frame header size */ +#define ZSTD_FRAMEHEADERSIZE_MIN 6 +#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* can be useful for static allocation */ +#define ZSTD_SKIPPABLEHEADERSIZE 8 + +/* compression parameter bounds */ +#define ZSTD_WINDOWLOG_MAX_32 30 +#define ZSTD_WINDOWLOG_MAX_64 31 +#define ZSTD_WINDOWLOG_MAX ((int)(sizeof(size_t) == 4 ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64)) +#define ZSTD_WINDOWLOG_MIN 10 +#define ZSTD_HASHLOG_MAX ((ZSTD_WINDOWLOG_MAX < 30) ? ZSTD_WINDOWLOG_MAX : 30) +#define ZSTD_HASHLOG_MIN 6 +#define ZSTD_CHAINLOG_MAX_32 29 +#define ZSTD_CHAINLOG_MAX_64 30 +#define ZSTD_CHAINLOG_MAX ((int)(sizeof(size_t) == 4 ? ZSTD_CHAINLOG_MAX_32 : ZSTD_CHAINLOG_MAX_64)) +#define ZSTD_CHAINLOG_MIN ZSTD_HASHLOG_MIN +#define ZSTD_SEARCHLOG_MAX (ZSTD_WINDOWLOG_MAX-1) +#define ZSTD_SEARCHLOG_MIN 1 +#define ZSTD_MINMATCH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */ +#define ZSTD_MINMATCH_MIN 3 /* only for ZSTD_btopt+, faster strategies are limited to 4 */ +#define ZSTD_TARGETLENGTH_MAX ZSTD_BLOCKSIZE_MAX +#define ZSTD_TARGETLENGTH_MIN 0 /* note : comparing this constant to an unsigned results in a tautological test */ +#define ZSTD_STRATEGY_MIN ZSTD_fast +#define ZSTD_STRATEGY_MAX ZSTD_btultra2 + + +#define ZSTD_OVERLAPLOG_MIN 0 +#define ZSTD_OVERLAPLOG_MAX 9 + +#define ZSTD_WINDOWLOG_LIMIT_DEFAULT 27 /* by default, the streaming decoder will refuse any frame + * requiring larger than (1<= ZSTD_FRAMEHEADERSIZE_PREFIX. + * @return : size of the Frame Header, + * or an error code (if srcSize is too small) */ +ZSTDLIB_API size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize); + + +/*************************************** +* Memory management +***************************************/ + +/*! ZSTD_estimate*() : + * These functions make it possible to estimate memory usage + * of a future {D,C}Ctx, before its creation. + * ZSTD_estimateCCtxSize() will provide a budget large enough for any compression level up to selected one. + * It will also consider src size to be arbitrarily "large", which is worst case. + * If srcSize is known to always be small, ZSTD_estimateCCtxSize_usingCParams() can provide a tighter estimation. + * ZSTD_estimateCCtxSize_usingCParams() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel. + * ZSTD_estimateCCtxSize_usingCCtxParams() can be used in tandem with ZSTD_CCtxParams_setParameter(). Only single-threaded compression is supported. This function will return an error code if ZSTD_c_nbWorkers is >= 1. + * Note : CCtx size estimation is only correct for single-threaded compression. */ +ZSTDLIB_API size_t ZSTD_estimateCCtxSize(int compressionLevel); +ZSTDLIB_API size_t ZSTD_estimateCCtxSize_usingCParams(ZSTD_compressionParameters cParams); +ZSTDLIB_API size_t ZSTD_estimateCCtxSize_usingCCtxParams(const ZSTD_CCtx_params* params); +ZSTDLIB_API size_t ZSTD_estimateDCtxSize(void); + +/*! ZSTD_estimateCStreamSize() : + * ZSTD_estimateCStreamSize() will provide a budget large enough for any compression level up to selected one. + * It will also consider src size to be arbitrarily "large", which is worst case. + * If srcSize is known to always be small, ZSTD_estimateCStreamSize_usingCParams() can provide a tighter estimation. + * ZSTD_estimateCStreamSize_usingCParams() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel. + * ZSTD_estimateCStreamSize_usingCCtxParams() can be used in tandem with ZSTD_CCtxParams_setParameter(). Only single-threaded compression is supported. This function will return an error code if ZSTD_c_nbWorkers is >= 1. + * Note : CStream size estimation is only correct for single-threaded compression. + * ZSTD_DStream memory budget depends on window Size. + * This information can be passed manually, using ZSTD_estimateDStreamSize, + * or deducted from a valid frame Header, using ZSTD_estimateDStreamSize_fromFrame(); + * Note : if streaming is init with function ZSTD_init?Stream_usingDict(), + * an internal ?Dict will be created, which additional size is not estimated here. + * In this case, get total size by adding ZSTD_estimate?DictSize */ +ZSTDLIB_API size_t ZSTD_estimateCStreamSize(int compressionLevel); +ZSTDLIB_API size_t ZSTD_estimateCStreamSize_usingCParams(ZSTD_compressionParameters cParams); +ZSTDLIB_API size_t ZSTD_estimateCStreamSize_usingCCtxParams(const ZSTD_CCtx_params* params); +ZSTDLIB_API size_t ZSTD_estimateDStreamSize(size_t windowSize); +ZSTDLIB_API size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize); + +/*! ZSTD_estimate?DictSize() : + * ZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict(). + * ZSTD_estimateCDictSize_advanced() makes it possible to control compression parameters precisely, like ZSTD_createCDict_advanced(). + * Note : dictionaries created by reference (`ZSTD_dlm_byRef`) are logically smaller. + */ +ZSTDLIB_API size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel); +ZSTDLIB_API size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, ZSTD_dictLoadMethod_e dictLoadMethod); +ZSTDLIB_API size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod); + +/*! ZSTD_initStatic*() : + * Initialize an object using a pre-allocated fixed-size buffer. + * workspace: The memory area to emplace the object into. + * Provided pointer *must be 8-bytes aligned*. + * Buffer must outlive object. + * workspaceSize: Use ZSTD_estimate*Size() to determine + * how large workspace must be to support target scenario. + * @return : pointer to object (same address as workspace, just different type), + * or NULL if error (size too small, incorrect alignment, etc.) + * Note : zstd will never resize nor malloc() when using a static buffer. + * If the object requires more memory than available, + * zstd will just error out (typically ZSTD_error_memory_allocation). + * Note 2 : there is no corresponding "free" function. + * Since workspace is allocated externally, it must be freed externally too. + * Note 3 : cParams : use ZSTD_getCParams() to convert a compression level + * into its associated cParams. + * Limitation 1 : currently not compatible with internal dictionary creation, triggered by + * ZSTD_CCtx_loadDictionary(), ZSTD_initCStream_usingDict() or ZSTD_initDStream_usingDict(). + * Limitation 2 : static cctx currently not compatible with multi-threading. + * Limitation 3 : static dctx is incompatible with legacy support. + */ +ZSTDLIB_API ZSTD_CCtx* ZSTD_initStaticCCtx(void* workspace, size_t workspaceSize); +ZSTDLIB_API ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticCCtx() */ + +ZSTDLIB_API ZSTD_DCtx* ZSTD_initStaticDCtx(void* workspace, size_t workspaceSize); +ZSTDLIB_API ZSTD_DStream* ZSTD_initStaticDStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticDCtx() */ + +ZSTDLIB_API const ZSTD_CDict* ZSTD_initStaticCDict( + void* workspace, size_t workspaceSize, + const void* dict, size_t dictSize, + ZSTD_dictLoadMethod_e dictLoadMethod, + ZSTD_dictContentType_e dictContentType, + ZSTD_compressionParameters cParams); + +ZSTDLIB_API const ZSTD_DDict* ZSTD_initStaticDDict( + void* workspace, size_t workspaceSize, + const void* dict, size_t dictSize, + ZSTD_dictLoadMethod_e dictLoadMethod, + ZSTD_dictContentType_e dictContentType); + + +/*! Custom memory allocation : + * These prototypes make it possible to pass your own allocation/free functions. + * ZSTD_customMem is provided at creation time, using ZSTD_create*_advanced() variants listed below. + * All allocation/free operations will be completed using these custom variants instead of regular ones. + */ +typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size); +typedef void (*ZSTD_freeFunction) (void* opaque, void* address); +typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree; void* opaque; } ZSTD_customMem; +static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< this constant defers to stdlib's functions */ + +ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem); +ZSTDLIB_API ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem); +ZSTDLIB_API ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem); +ZSTDLIB_API ZSTD_DStream* ZSTD_createDStream_advanced(ZSTD_customMem customMem); + +ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictSize, + ZSTD_dictLoadMethod_e dictLoadMethod, + ZSTD_dictContentType_e dictContentType, + ZSTD_compressionParameters cParams, + ZSTD_customMem customMem); + +ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, + ZSTD_dictLoadMethod_e dictLoadMethod, + ZSTD_dictContentType_e dictContentType, + ZSTD_customMem customMem); + + + +/*************************************** +* Advanced compression functions +***************************************/ + +/*! ZSTD_createCDict_byReference() : + * Create a digested dictionary for compression + * Dictionary content is just referenced, not duplicated. + * As a consequence, `dictBuffer` **must** outlive CDict, + * and its content must remain unmodified throughout the lifetime of CDict. */ +ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_byReference(const void* dictBuffer, size_t dictSize, int compressionLevel); + +/*! ZSTD_getCParams() : + * @return ZSTD_compressionParameters structure for a selected compression level and estimated srcSize. + * `estimatedSrcSize` value is optional, select 0 if not known */ +ZSTDLIB_API ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); + +/*! ZSTD_getParams() : + * same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. + * All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 */ +ZSTDLIB_API ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); + +/*! ZSTD_checkCParams() : + * Ensure param values remain within authorized range. + * @return 0 on success, or an error code (can be checked with ZSTD_isError()) */ +ZSTDLIB_API size_t ZSTD_checkCParams(ZSTD_compressionParameters params); + +/*! ZSTD_adjustCParams() : + * optimize params for a given `srcSize` and `dictSize`. + * `srcSize` can be unknown, in which case use ZSTD_CONTENTSIZE_UNKNOWN. + * `dictSize` must be `0` when there is no dictionary. + * cPar can be invalid : all parameters will be clamped within valid range in the @return struct. + * This function never fails (wide contract) */ +ZSTDLIB_API ZSTD_compressionParameters ZSTD_adjustCParams(ZSTD_compressionParameters cPar, unsigned long long srcSize, size_t dictSize); + +/*! ZSTD_compress_advanced() : + * Same as ZSTD_compress_usingDict(), with fine-tune control over compression parameters (by structure) */ +ZSTDLIB_API size_t ZSTD_compress_advanced(ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const void* dict,size_t dictSize, + ZSTD_parameters params); + +/*! ZSTD_compress_usingCDict_advanced() : + * Same as ZSTD_compress_usingCDict(), with fine-tune control over frame parameters */ +ZSTDLIB_API size_t ZSTD_compress_usingCDict_advanced(ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const ZSTD_CDict* cdict, + ZSTD_frameParameters fParams); + + +/*! ZSTD_CCtx_loadDictionary_byReference() : + * Same as ZSTD_CCtx_loadDictionary(), but dictionary content is referenced, instead of being copied into CCtx. + * It saves some memory, but also requires that `dict` outlives its usage within `cctx` */ +ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary_byReference(ZSTD_CCtx* cctx, const void* dict, size_t dictSize); + +/*! ZSTD_CCtx_loadDictionary_advanced() : + * Same as ZSTD_CCtx_loadDictionary(), but gives finer control over + * how to load the dictionary (by copy ? by reference ?) + * and how to interpret it (automatic ? force raw mode ? full mode only ?) */ +ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType); + +/*! ZSTD_CCtx_refPrefix_advanced() : + * Same as ZSTD_CCtx_refPrefix(), but gives finer control over + * how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) */ +ZSTDLIB_API size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType); + +/* === experimental parameters === */ +/* these parameters can be used with ZSTD_setParameter() + * they are not guaranteed to remain supported in the future */ + + /* Enables rsyncable mode, + * which makes compressed files more rsync friendly + * by adding periodic synchronization points to the compressed data. + * The target average block size is ZSTD_c_jobSize / 2. + * It's possible to modify the job size to increase or decrease + * the granularity of the synchronization point. + * Once the jobSize is smaller than the window size, + * it will result in compression ratio degradation. + * NOTE 1: rsyncable mode only works when multithreading is enabled. + * NOTE 2: rsyncable performs poorly in combination with long range mode, + * since it will decrease the effectiveness of synchronization points, + * though mileage may vary. + * NOTE 3: Rsyncable mode limits maximum compression speed to ~400 MB/s. + * If the selected compression level is already running significantly slower, + * the overall speed won't be significantly impacted. + */ + #define ZSTD_c_rsyncable ZSTD_c_experimentalParam1 + +/* Select a compression format. + * The value must be of type ZSTD_format_e. + * See ZSTD_format_e enum definition for details */ +#define ZSTD_c_format ZSTD_c_experimentalParam2 + +/* Force back-reference distances to remain < windowSize, + * even when referencing into Dictionary content (default:0) */ +#define ZSTD_c_forceMaxWindow ZSTD_c_experimentalParam3 + +/* Controls whether the contents of a CDict + * are used in place, or copied into the working context. + * Accepts values from the ZSTD_dictAttachPref_e enum. + * See the comments on that enum for an explanation of the feature. */ +#define ZSTD_c_forceAttachDict ZSTD_c_experimentalParam4 + +/* Controls how the literals are compressed (default is auto). + * The value must be of type ZSTD_literalCompressionMode_e. + * See ZSTD_literalCompressionMode_t enum definition for details. + */ +#define ZSTD_c_literalCompressionMode ZSTD_c_experimentalParam5 + +/*! ZSTD_CCtx_getParameter() : + * Get the requested compression parameter value, selected by enum ZSTD_cParameter, + * and store it into int* value. + * @return : 0, or an error code (which can be tested with ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_CCtx_getParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int* value); + + +/*! ZSTD_CCtx_params : + * Quick howto : + * - ZSTD_createCCtxParams() : Create a ZSTD_CCtx_params structure + * - ZSTD_CCtxParams_setParameter() : Push parameters one by one into + * an existing ZSTD_CCtx_params structure. + * This is similar to + * ZSTD_CCtx_setParameter(). + * - ZSTD_CCtx_setParametersUsingCCtxParams() : Apply parameters to + * an existing CCtx. + * These parameters will be applied to + * all subsequent frames. + * - ZSTD_compressStream2() : Do compression using the CCtx. + * - ZSTD_freeCCtxParams() : Free the memory. + * + * This can be used with ZSTD_estimateCCtxSize_advanced_usingCCtxParams() + * for static allocation of CCtx for single-threaded compression. + */ +ZSTDLIB_API ZSTD_CCtx_params* ZSTD_createCCtxParams(void); +ZSTDLIB_API size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); + +/*! ZSTD_CCtxParams_reset() : + * Reset params to default values. + */ +ZSTDLIB_API size_t ZSTD_CCtxParams_reset(ZSTD_CCtx_params* params); + +/*! ZSTD_CCtxParams_init() : + * Initializes the compression parameters of cctxParams according to + * compression level. All other parameters are reset to their default values. + */ +ZSTDLIB_API size_t ZSTD_CCtxParams_init(ZSTD_CCtx_params* cctxParams, int compressionLevel); + +/*! ZSTD_CCtxParams_init_advanced() : + * Initializes the compression and frame parameters of cctxParams according to + * params. All other parameters are reset to their default values. + */ +ZSTDLIB_API size_t ZSTD_CCtxParams_init_advanced(ZSTD_CCtx_params* cctxParams, ZSTD_parameters params); + +/*! ZSTD_CCtxParams_setParameter() : + * Similar to ZSTD_CCtx_setParameter. + * Set one compression parameter, selected by enum ZSTD_cParameter. + * Parameters must be applied to a ZSTD_CCtx using ZSTD_CCtx_setParametersUsingCCtxParams(). + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_CCtxParams_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int value); + +/*! ZSTD_CCtxParams_getParameter() : + * Similar to ZSTD_CCtx_getParameter. + * Get the requested value of one compression parameter, selected by enum ZSTD_cParameter. + * @result : 0, or an error code (which can be tested with ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_CCtxParams_getParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int* value); + +/*! ZSTD_CCtx_setParametersUsingCCtxParams() : + * Apply a set of ZSTD_CCtx_params to the compression context. + * This can be done even after compression is started, + * if nbWorkers==0, this will have no impact until a new compression is started. + * if nbWorkers>=1, new parameters will be picked up at next job, + * with a few restrictions (windowLog, pledgedSrcSize, nbWorkers, jobSize, and overlapLog are not updated). + */ +ZSTDLIB_API size_t ZSTD_CCtx_setParametersUsingCCtxParams( + ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params); + +/*! ZSTD_compressStream2_simpleArgs() : + * Same as ZSTD_compressStream2(), + * but using only integral types as arguments. + * This variant might be helpful for binders from dynamic languages + * which have troubles handling structures containing memory pointers. + */ +ZSTDLIB_API size_t ZSTD_compressStream2_simpleArgs ( + ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, size_t* dstPos, + const void* src, size_t srcSize, size_t* srcPos, + ZSTD_EndDirective endOp); + + +/*************************************** +* Advanced decompression functions +***************************************/ + +/*! ZSTD_isFrame() : + * Tells if the content of `buffer` starts with a valid Frame Identifier. + * Note : Frame Identifier is 4 bytes. If `size < 4`, @return will always be 0. + * Note 2 : Legacy Frame Identifiers are considered valid only if Legacy Support is enabled. + * Note 3 : Skippable Frame Identifiers are considered valid. */ +ZSTDLIB_API unsigned ZSTD_isFrame(const void* buffer, size_t size); + +/*! ZSTD_createDDict_byReference() : + * Create a digested dictionary, ready to start decompression operation without startup delay. + * Dictionary content is referenced, and therefore stays in dictBuffer. + * It is important that dictBuffer outlives DDict, + * it must remain read accessible throughout the lifetime of DDict */ +ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, size_t dictSize); + +/*! ZSTD_DCtx_loadDictionary_byReference() : + * Same as ZSTD_DCtx_loadDictionary(), + * but references `dict` content instead of copying it into `dctx`. + * This saves memory if `dict` remains around., + * However, it's imperative that `dict` remains accessible (and unmodified) while being used, so it must outlive decompression. */ +ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); + +/*! ZSTD_DCtx_loadDictionary_advanced() : + * Same as ZSTD_DCtx_loadDictionary(), + * but gives direct control over + * how to load the dictionary (by copy ? by reference ?) + * and how to interpret it (automatic ? force raw mode ? full mode only ?). */ +ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType); + +/*! ZSTD_DCtx_refPrefix_advanced() : + * Same as ZSTD_DCtx_refPrefix(), but gives finer control over + * how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) */ +ZSTDLIB_API size_t ZSTD_DCtx_refPrefix_advanced(ZSTD_DCtx* dctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType); + +/*! ZSTD_DCtx_setMaxWindowSize() : + * Refuses allocating internal buffers for frames requiring a window size larger than provided limit. + * This protects a decoder context from reserving too much memory for itself (potential attack scenario). + * This parameter is only useful in streaming mode, since no internal buffer is allocated in single-pass mode. + * By default, a decompression context accepts all window sizes <= (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT) + * @return : 0, or an error code (which can be tested using ZSTD_isError()). + */ +ZSTDLIB_API size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowSize); + +/* ZSTD_d_format + * experimental parameter, + * allowing selection between ZSTD_format_e input compression formats + */ +#define ZSTD_d_format ZSTD_d_experimentalParam1 + +/*! ZSTD_DCtx_setFormat() : + * Instruct the decoder context about what kind of data to decode next. + * This instruction is mandatory to decode data without a fully-formed header, + * such ZSTD_f_zstd1_magicless for example. + * @return : 0, or an error code (which can be tested using ZSTD_isError()). */ +ZSTDLIB_API size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format); + +/*! ZSTD_decompressStream_simpleArgs() : + * Same as ZSTD_decompressStream(), + * but using only integral types as arguments. + * This can be helpful for binders from dynamic languages + * which have troubles handling structures containing memory pointers. + */ +ZSTDLIB_API size_t ZSTD_decompressStream_simpleArgs ( + ZSTD_DCtx* dctx, + void* dst, size_t dstCapacity, size_t* dstPos, + const void* src, size_t srcSize, size_t* srcPos); + + +/******************************************************************** +* Advanced streaming functions +* Warning : most of these functions are now redundant with the Advanced API. +* Once Advanced API reaches "stable" status, +* redundant functions will be deprecated, and then at some point removed. +********************************************************************/ + +/*===== Advanced Streaming compression functions =====*/ +/**! ZSTD_initCStream_srcSize() : + * This function is deprecated, and equivalent to: + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_refCDict(zcs, NULL); // clear the dictionary (if any) + * ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); + * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); + * + * pledgedSrcSize must be correct. If it is not known at init time, use + * ZSTD_CONTENTSIZE_UNKNOWN. Note that, for compatibility with older programs, + * "0" also disables frame content size field. It may be enabled in the future. + */ +ZSTDLIB_API size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize); +/**! ZSTD_initCStream_usingDict() : + * This function is deprecated, and is equivalent to: + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); + * ZSTD_CCtx_loadDictionary(zcs, dict, dictSize); + * + * Creates of an internal CDict (incompatible with static CCtx), except if + * dict == NULL or dictSize < 8, in which case no dict is used. + * Note: dict is loaded with ZSTD_dm_auto (treated as a full zstd dictionary if + * it begins with ZSTD_MAGIC_DICTIONARY, else as raw content) and ZSTD_dlm_byCopy. + */ +ZSTDLIB_API size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel); +/**! ZSTD_initCStream_advanced() : + * This function is deprecated, and is approximately equivalent to: + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_setZstdParams(zcs, params); // Set the zstd params and leave the rest as-is + * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); + * ZSTD_CCtx_loadDictionary(zcs, dict, dictSize); + * + * pledgedSrcSize must be correct. If srcSize is not known at init time, use + * value ZSTD_CONTENTSIZE_UNKNOWN. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. + */ +ZSTDLIB_API size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, const void* dict, size_t dictSize, + ZSTD_parameters params, unsigned long long pledgedSrcSize); +/**! ZSTD_initCStream_usingCDict() : + * This function is deprecated, and equivalent to: + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_refCDict(zcs, cdict); + * + * note : cdict will just be referenced, and must outlive compression session + */ +ZSTDLIB_API size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict); +/**! ZSTD_initCStream_usingCDict_advanced() : + * This function is deprecated, and is approximately equivalent to: + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_setZstdFrameParams(zcs, fParams); // Set the zstd frame params and leave the rest as-is + * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); + * ZSTD_CCtx_refCDict(zcs, cdict); + * + * same as ZSTD_initCStream_usingCDict(), with control over frame parameters. + * pledgedSrcSize must be correct. If srcSize is not known at init time, use + * value ZSTD_CONTENTSIZE_UNKNOWN. + */ +ZSTDLIB_API size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize); + +/*! ZSTD_resetCStream() : + * This function is deprecated, and is equivalent to: + * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); + * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); + * + * start a new frame, using same parameters from previous frame. + * This is typically useful to skip dictionary loading stage, since it will re-use it in-place. + * Note that zcs must be init at least once before using ZSTD_resetCStream(). + * If pledgedSrcSize is not known at reset time, use macro ZSTD_CONTENTSIZE_UNKNOWN. + * If pledgedSrcSize > 0, its value must be correct, as it will be written in header, and controlled at the end. + * For the time being, pledgedSrcSize==0 is interpreted as "srcSize unknown" for compatibility with older programs, + * but it will change to mean "empty" in future version, so use macro ZSTD_CONTENTSIZE_UNKNOWN instead. + * @return : 0, or an error code (which can be tested using ZSTD_isError()) + */ +ZSTDLIB_API size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize); + + +typedef struct { + unsigned long long ingested; /* nb input bytes read and buffered */ + unsigned long long consumed; /* nb input bytes actually compressed */ + unsigned long long produced; /* nb of compressed bytes generated and buffered */ + unsigned long long flushed; /* nb of compressed bytes flushed : not provided; can be tracked from caller side */ + unsigned currentJobID; /* MT only : latest started job nb */ + unsigned nbActiveWorkers; /* MT only : nb of workers actively compressing at probe time */ +} ZSTD_frameProgression; + +/* ZSTD_getFrameProgression() : + * tells how much data has been ingested (read from input) + * consumed (input actually compressed) and produced (output) for current frame. + * Note : (ingested - consumed) is amount of input data buffered internally, not yet compressed. + * Aggregates progression inside active worker threads. + */ +ZSTDLIB_API ZSTD_frameProgression ZSTD_getFrameProgression(const ZSTD_CCtx* cctx); + +/*! ZSTD_toFlushNow() : + * Tell how many bytes are ready to be flushed immediately. + * Useful for multithreading scenarios (nbWorkers >= 1). + * Probe the oldest active job, defined as oldest job not yet entirely flushed, + * and check its output buffer. + * @return : amount of data stored in oldest job and ready to be flushed immediately. + * if @return == 0, it means either : + * + there is no active job (could be checked with ZSTD_frameProgression()), or + * + oldest job is still actively compressing data, + * but everything it has produced has also been flushed so far, + * therefore flush speed is limited by production speed of oldest job + * irrespective of the speed of concurrent (and newer) jobs. + */ +ZSTDLIB_API size_t ZSTD_toFlushNow(ZSTD_CCtx* cctx); + + +/*===== Advanced Streaming decompression functions =====*/ +/** + * This function is deprecated, and is equivalent to: + * + * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); + * ZSTD_DCtx_loadDictionary(zds, dict, dictSize); + * + * note: no dictionary will be used if dict == NULL or dictSize < 8 + */ +ZSTDLIB_API size_t ZSTD_initDStream_usingDict(ZSTD_DStream* zds, const void* dict, size_t dictSize); +/** + * This function is deprecated, and is equivalent to: + * + * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); + * ZSTD_DCtx_refDDict(zds, ddict); + * + * note : ddict is referenced, it must outlive decompression session + */ +ZSTDLIB_API size_t ZSTD_initDStream_usingDDict(ZSTD_DStream* zds, const ZSTD_DDict* ddict); +/** + * This function is deprecated, and is equivalent to: + * + * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); + * + * re-use decompression parameters from previous init; saves dictionary loading + */ +ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); + + +/********************************************************************* +* Buffer-less and synchronous inner streaming functions +* +* This is an advanced API, giving full control over buffer management, for users which need direct control over memory. +* But it's also a complex one, with several restrictions, documented below. +* Prefer normal streaming API for an easier experience. +********************************************************************* */ + +/** + Buffer-less streaming compression (synchronous mode) + + A ZSTD_CCtx object is required to track streaming operations. + Use ZSTD_createCCtx() / ZSTD_freeCCtx() to manage resource. + ZSTD_CCtx object can be re-used multiple times within successive compression operations. + + Start by initializing a context. + Use ZSTD_compressBegin(), or ZSTD_compressBegin_usingDict() for dictionary compression, + or ZSTD_compressBegin_advanced(), for finer parameter control. + It's also possible to duplicate a reference context which has already been initialized, using ZSTD_copyCCtx() + + Then, consume your input using ZSTD_compressContinue(). + There are some important considerations to keep in mind when using this advanced function : + - ZSTD_compressContinue() has no internal buffer. It uses externally provided buffers only. + - Interface is synchronous : input is consumed entirely and produces 1+ compressed blocks. + - Caller must ensure there is enough space in `dst` to store compressed data under worst case scenario. + Worst case evaluation is provided by ZSTD_compressBound(). + ZSTD_compressContinue() doesn't guarantee recover after a failed compression. + - ZSTD_compressContinue() presumes prior input ***is still accessible and unmodified*** (up to maximum distance size, see WindowLog). + It remembers all previous contiguous blocks, plus one separated memory segment (which can itself consists of multiple contiguous blocks) + - ZSTD_compressContinue() detects that prior input has been overwritten when `src` buffer overlaps. + In which case, it will "discard" the relevant memory section from its history. + + Finish a frame with ZSTD_compressEnd(), which will write the last block(s) and optional checksum. + It's possible to use srcSize==0, in which case, it will write a final empty block to end the frame. + Without last block mark, frames are considered unfinished (hence corrupted) by compliant decoders. + + `ZSTD_CCtx` object can be re-used (ZSTD_compressBegin()) to compress again. +*/ + +/*===== Buffer-less streaming compression functions =====*/ +ZSTDLIB_API size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel); +ZSTDLIB_API size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel); +ZSTDLIB_API size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize : If srcSize is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN */ +ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); /**< note: fails if cdict==NULL */ +ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize); /* compression parameters are already set within cdict. pledgedSrcSize must be correct. If srcSize is not known, use macro ZSTD_CONTENTSIZE_UNKNOWN */ +ZSTDLIB_API size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned long long pledgedSrcSize); /**< note: if pledgedSrcSize is not known, use ZSTD_CONTENTSIZE_UNKNOWN */ + +ZSTDLIB_API size_t ZSTD_compressContinue(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); +ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); + + +/*- + Buffer-less streaming decompression (synchronous mode) + + A ZSTD_DCtx object is required to track streaming operations. + Use ZSTD_createDCtx() / ZSTD_freeDCtx() to manage it. + A ZSTD_DCtx object can be re-used multiple times. + + First typical operation is to retrieve frame parameters, using ZSTD_getFrameHeader(). + Frame header is extracted from the beginning of compressed frame, so providing only the frame's beginning is enough. + Data fragment must be large enough to ensure successful decoding. + `ZSTD_frameHeaderSize_max` bytes is guaranteed to always be large enough. + @result : 0 : successful decoding, the `ZSTD_frameHeader` structure is correctly filled. + >0 : `srcSize` is too small, please provide at least @result bytes on next attempt. + errorCode, which can be tested using ZSTD_isError(). + + It fills a ZSTD_frameHeader structure with important information to correctly decode the frame, + such as the dictionary ID, content size, or maximum back-reference distance (`windowSize`). + Note that these values could be wrong, either because of data corruption, or because a 3rd party deliberately spoofs false information. + As a consequence, check that values remain within valid application range. + For example, do not allocate memory blindly, check that `windowSize` is within expectation. + Each application can set its own limits, depending on local restrictions. + For extended interoperability, it is recommended to support `windowSize` of at least 8 MB. + + ZSTD_decompressContinue() needs previous data blocks during decompression, up to `windowSize` bytes. + ZSTD_decompressContinue() is very sensitive to contiguity, + if 2 blocks don't follow each other, make sure that either the compressor breaks contiguity at the same place, + or that previous contiguous segment is large enough to properly handle maximum back-reference distance. + There are multiple ways to guarantee this condition. + + The most memory efficient way is to use a round buffer of sufficient size. + Sufficient size is determined by invoking ZSTD_decodingBufferSize_min(), + which can @return an error code if required value is too large for current system (in 32-bits mode). + In a round buffer methodology, ZSTD_decompressContinue() decompresses each block next to previous one, + up to the moment there is not enough room left in the buffer to guarantee decoding another full block, + which maximum size is provided in `ZSTD_frameHeader` structure, field `blockSizeMax`. + At which point, decoding can resume from the beginning of the buffer. + Note that already decoded data stored in the buffer should be flushed before being overwritten. + + There are alternatives possible, for example using two or more buffers of size `windowSize` each, though they consume more memory. + + Finally, if you control the compression process, you can also ignore all buffer size rules, + as long as the encoder and decoder progress in "lock-step", + aka use exactly the same buffer sizes, break contiguity at the same place, etc. + + Once buffers are setup, start decompression, with ZSTD_decompressBegin(). + If decompression requires a dictionary, use ZSTD_decompressBegin_usingDict() or ZSTD_decompressBegin_usingDDict(). + + Then use ZSTD_nextSrcSizeToDecompress() and ZSTD_decompressContinue() alternatively. + ZSTD_nextSrcSizeToDecompress() tells how many bytes to provide as 'srcSize' to ZSTD_decompressContinue(). + ZSTD_decompressContinue() requires this _exact_ amount of bytes, or it will fail. + + @result of ZSTD_decompressContinue() is the number of bytes regenerated within 'dst' (necessarily <= dstCapacity). + It can be zero : it just means ZSTD_decompressContinue() has decoded some metadata item. + It can also be an error code, which can be tested with ZSTD_isError(). + + A frame is fully decoded when ZSTD_nextSrcSizeToDecompress() returns zero. + Context can then be reset to start a new decompression. + + Note : it's possible to know if next input to present is a header or a block, using ZSTD_nextInputType(). + This information is not required to properly decode a frame. + + == Special case : skippable frames == + + Skippable frames allow integration of user-defined data into a flow of concatenated frames. + Skippable frames will be ignored (skipped) by decompressor. + The format of skippable frames is as follows : + a) Skippable frame ID - 4 Bytes, Little endian format, any value from 0x184D2A50 to 0x184D2A5F + b) Frame Size - 4 Bytes, Little endian format, unsigned 32-bits + c) Frame Content - any content (User Data) of length equal to Frame Size + For skippable frames ZSTD_getFrameHeader() returns zfhPtr->frameType==ZSTD_skippableFrame. + For skippable frames ZSTD_decompressContinue() always returns 0 : it only skips the content. +*/ + +/*===== Buffer-less streaming decompression functions =====*/ +typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e; +typedef struct { + unsigned long long frameContentSize; /* if == ZSTD_CONTENTSIZE_UNKNOWN, it means this field is not available. 0 means "empty" */ + unsigned long long windowSize; /* can be very large, up to <= frameContentSize */ + unsigned blockSizeMax; + ZSTD_frameType_e frameType; /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */ + unsigned headerSize; + unsigned dictID; + unsigned checksumFlag; +} ZSTD_frameHeader; + +/** ZSTD_getFrameHeader() : + * decode Frame Header, or requires larger `srcSize`. + * @return : 0, `zfhPtr` is correctly filled, + * >0, `srcSize` is too small, value is wanted `srcSize` amount, + * or an error code, which can be tested using ZSTD_isError() */ +ZSTDLIB_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); /**< doesn't consume input */ +/*! ZSTD_getFrameHeader_advanced() : + * same as ZSTD_getFrameHeader(), + * with added capability to select a format (like ZSTD_f_zstd1_magicless) */ +ZSTDLIB_API size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format); +ZSTDLIB_API size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long long frameContentSize); /**< when frame content size is not known, pass in frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN */ + +ZSTDLIB_API size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx); +ZSTDLIB_API size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); +ZSTDLIB_API size_t ZSTD_decompressBegin_usingDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); + +ZSTDLIB_API size_t ZSTD_nextSrcSizeToDecompress(ZSTD_DCtx* dctx); +ZSTDLIB_API size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); + +/* misc */ +ZSTDLIB_API void ZSTD_copyDCtx(ZSTD_DCtx* dctx, const ZSTD_DCtx* preparedDCtx); +typedef enum { ZSTDnit_frameHeader, ZSTDnit_blockHeader, ZSTDnit_block, ZSTDnit_lastBlock, ZSTDnit_checksum, ZSTDnit_skippableFrame } ZSTD_nextInputType_e; +ZSTDLIB_API ZSTD_nextInputType_e ZSTD_nextInputType(ZSTD_DCtx* dctx); + + + + +/* ============================ */ +/** Block level API */ +/* ============================ */ + +/*! + Block functions produce and decode raw zstd blocks, without frame metadata. + Frame metadata cost is typically ~18 bytes, which can be non-negligible for very small blocks (< 100 bytes). + User will have to take in charge required information to regenerate data, such as compressed and content sizes. + + A few rules to respect : + - Compressing and decompressing require a context structure + + Use ZSTD_createCCtx() and ZSTD_createDCtx() + - It is necessary to init context before starting + + compression : any ZSTD_compressBegin*() variant, including with dictionary + + decompression : any ZSTD_decompressBegin*() variant, including with dictionary + + copyCCtx() and copyDCtx() can be used too + - Block size is limited, it must be <= ZSTD_getBlockSize() <= ZSTD_BLOCKSIZE_MAX == 128 KB + + If input is larger than a block size, it's necessary to split input data into multiple blocks + + For inputs larger than a single block, really consider using regular ZSTD_compress() instead. + Frame metadata is not that costly, and quickly becomes negligible as source size grows larger. + - When a block is considered not compressible enough, ZSTD_compressBlock() result will be zero. + In which case, nothing is produced into `dst` ! + + User must test for such outcome and deal directly with uncompressed data + + ZSTD_decompressBlock() doesn't accept uncompressed data as input !!! + + In case of multiple successive blocks, should some of them be uncompressed, + decoder must be informed of their existence in order to follow proper history. + Use ZSTD_insertBlock() for such a case. +*/ + +/*===== Raw zstd block functions =====*/ +ZSTDLIB_API size_t ZSTD_getBlockSize (const ZSTD_CCtx* cctx); +ZSTDLIB_API size_t ZSTD_compressBlock (ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); +ZSTDLIB_API size_t ZSTD_decompressBlock(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); +ZSTDLIB_API size_t ZSTD_insertBlock (ZSTD_DCtx* dctx, const void* blockStart, size_t blockSize); /**< insert uncompressed block into `dctx` history. Useful for multi-blocks decompression. */ + + +#endif /* ZSTD_H_ZSTD_STATIC_LINKING_ONLY */ + +#if defined (__cplusplus) +} +#endif diff --git a/vendor/github.com/valyala/gozstd/zstd_errors.h b/vendor/github.com/valyala/gozstd/zstd_errors.h new file mode 100644 index 000000000..92a343389 --- /dev/null +++ b/vendor/github.com/valyala/gozstd/zstd_errors.h @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under both the BSD-style license (found in the + * LICENSE file in the root directory of this source tree) and the GPLv2 (found + * in the COPYING file in the root directory of this source tree). + * You may select, at your option, one of the above-listed licenses. + */ + +#ifndef ZSTD_ERRORS_H_398273423 +#define ZSTD_ERRORS_H_398273423 + +#if defined (__cplusplus) +extern "C" { +#endif + +/*===== dependency =====*/ +#include /* size_t */ + + +/* ===== ZSTDERRORLIB_API : control library symbols visibility ===== */ +#ifndef ZSTDERRORLIB_VISIBILITY +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define ZSTDERRORLIB_VISIBILITY __attribute__ ((visibility ("default"))) +# else +# define ZSTDERRORLIB_VISIBILITY +# endif +#endif +#if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) +# define ZSTDERRORLIB_API __declspec(dllexport) ZSTDERRORLIB_VISIBILITY +#elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) +# define ZSTDERRORLIB_API __declspec(dllimport) ZSTDERRORLIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ +#else +# define ZSTDERRORLIB_API ZSTDERRORLIB_VISIBILITY +#endif + +/*-********************************************* + * Error codes list + *-********************************************* + * Error codes _values_ are pinned down since v1.3.1 only. + * Therefore, don't rely on values if you may link to any version < v1.3.1. + * + * Only values < 100 are considered stable. + * + * note 1 : this API shall be used with static linking only. + * dynamic linking is not yet officially supported. + * note 2 : Prefer relying on the enum than on its value whenever possible + * This is the only supported way to use the error list < v1.3.1 + * note 3 : ZSTD_isError() is always correct, whatever the library version. + **********************************************/ +typedef enum { + ZSTD_error_no_error = 0, + ZSTD_error_GENERIC = 1, + ZSTD_error_prefix_unknown = 10, + ZSTD_error_version_unsupported = 12, + ZSTD_error_frameParameter_unsupported = 14, + ZSTD_error_frameParameter_windowTooLarge = 16, + ZSTD_error_corruption_detected = 20, + ZSTD_error_checksum_wrong = 22, + ZSTD_error_dictionary_corrupted = 30, + ZSTD_error_dictionary_wrong = 32, + ZSTD_error_dictionaryCreation_failed = 34, + ZSTD_error_parameter_unsupported = 40, + ZSTD_error_parameter_outOfBound = 42, + ZSTD_error_tableLog_tooLarge = 44, + ZSTD_error_maxSymbolValue_tooLarge = 46, + ZSTD_error_maxSymbolValue_tooSmall = 48, + ZSTD_error_stage_wrong = 60, + ZSTD_error_init_missing = 62, + ZSTD_error_memory_allocation = 64, + ZSTD_error_workSpace_tooSmall= 66, + ZSTD_error_dstSize_tooSmall = 70, + ZSTD_error_srcSize_wrong = 72, + ZSTD_error_dstBuffer_null = 74, + /* following error codes are __NOT STABLE__, they can be removed or changed in future versions */ + ZSTD_error_frameIndex_tooLarge = 100, + ZSTD_error_seekableIO = 102, + ZSTD_error_maxCode = 120 /* never EVER use this value directly, it can change in future versions! Use ZSTD_isError() instead */ +} ZSTD_ErrorCode; + +/*! ZSTD_getErrorCode() : + convert a `size_t` function result into a `ZSTD_ErrorCode` enum type, + which can be used to compare with enum list published above */ +ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult); +ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code); /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */ + + +#if defined (__cplusplus) +} +#endif + +#endif /* ZSTD_ERRORS_H_398273423 */ diff --git a/vendor/github.com/valyala/histogram/LICENSE b/vendor/github.com/valyala/histogram/LICENSE new file mode 100644 index 000000000..902bcad0a --- /dev/null +++ b/vendor/github.com/valyala/histogram/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 Aliaksandr Valialkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/valyala/histogram/README.md b/vendor/github.com/valyala/histogram/README.md new file mode 100644 index 000000000..6d4eb59c0 --- /dev/null +++ b/vendor/github.com/valyala/histogram/README.md @@ -0,0 +1,9 @@ +[![GoDoc](https://godoc.org/github.com/valyala/histogram?status.svg)](http://godoc.org/github.com/valyala/histogram) +[![Go Report](https://goreportcard.com/badge/github.com/valyala/histogram)](https://goreportcard.com/report/github.com/valyala/histogram) + + +# histogram + +Fast histograms for Go. + +See [docs](https://godoc.org/github.com/valyala/histogram). diff --git a/vendor/github.com/valyala/histogram/go.mod b/vendor/github.com/valyala/histogram/go.mod new file mode 100644 index 000000000..9710bc72b --- /dev/null +++ b/vendor/github.com/valyala/histogram/go.mod @@ -0,0 +1,3 @@ +module github.com/valyala/histogram + +require github.com/valyala/fastrand v1.0.0 diff --git a/vendor/github.com/valyala/histogram/go.sum b/vendor/github.com/valyala/histogram/go.sum new file mode 100644 index 000000000..2b3e848a5 --- /dev/null +++ b/vendor/github.com/valyala/histogram/go.sum @@ -0,0 +1,2 @@ +github.com/valyala/fastrand v1.0.0 h1:LUKT9aKer2dVQNUi3waewTbKV+7H17kvWFNKs2ObdkI= +github.com/valyala/fastrand v1.0.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ= diff --git a/vendor/github.com/valyala/histogram/histogram.go b/vendor/github.com/valyala/histogram/histogram.go new file mode 100644 index 000000000..3dce6404f --- /dev/null +++ b/vendor/github.com/valyala/histogram/histogram.go @@ -0,0 +1,121 @@ +// Package histogram provides building blocks for fast histograms. +package histogram + +import ( + "math" + "sort" + "sync" + + "github.com/valyala/fastrand" +) + +var ( + infNeg = math.Inf(-1) + infPos = math.Inf(1) + nan = math.NaN() +) + +// Fast is a fast histogram. +// +// It cannot be used from concurrently running goroutines without +// external synchronization. +type Fast struct { + max float64 + min float64 + count uint64 + + a []float64 + tmp []float64 + rng fastrand.RNG +} + +// NewFast returns new fast histogram. +func NewFast() *Fast { + f := &Fast{} + f.Reset() + return f +} + +// Reset resets the histogram. +func (f *Fast) Reset() { + f.max = infNeg + f.min = infPos + f.count = 0 + f.a = f.a[:0] + f.tmp = f.tmp[:0] +} + +// Update updates the f with v. +func (f *Fast) Update(v float64) { + if v > f.max { + f.max = v + } + if v < f.min { + f.min = v + } + + f.count++ + if len(f.a) < maxSamples { + f.a = append(f.a, v) + return + } + if n := int(f.rng.Uint32n(uint32(f.count))); n < len(f.a) { + f.a[n] = v + } +} + +const maxSamples = 1000 + +// Quantile returns the quantile value for the given phi. +func (f *Fast) Quantile(phi float64) float64 { + f.tmp = append(f.tmp[:0], f.a...) + sort.Float64s(f.tmp) + return f.quantile(phi) +} + +// Quantiles appends quantile values to dst for the given phis. +func (f *Fast) Quantiles(dst, phis []float64) []float64 { + f.tmp = append(f.tmp[:0], f.a...) + sort.Float64s(f.tmp) + for _, phi := range phis { + q := f.quantile(phi) + dst = append(dst, q) + } + return dst +} + +func (f *Fast) quantile(phi float64) float64 { + if len(f.tmp) == 0 || math.IsNaN(phi) { + return nan + } + if phi <= 0 { + return f.min + } + if phi >= 1 { + return f.max + } + idx := uint(phi*float64(len(f.tmp)-1) + 0.5) + if idx >= uint(len(f.tmp)) { + idx = uint(len(f.tmp) - 1) + } + return f.tmp[idx] +} + +// GetFast returns a histogram from a pool. +func GetFast() *Fast { + v := fastPool.Get() + if v == nil { + return NewFast() + } + return v.(*Fast) +} + +// PutFast puts hf to the pool. +// +// hf cannot be used after this call. +func PutFast(f *Fast) { + f.Reset() + fastPool.Put(f) +} + +var fastPool sync.Pool diff --git a/vendor/github.com/valyala/quicktemplate/.gitignore b/vendor/github.com/valyala/quicktemplate/.gitignore new file mode 100644 index 000000000..6e92f57d4 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/.gitignore @@ -0,0 +1 @@ +tags diff --git a/vendor/github.com/valyala/quicktemplate/.travis.yml b/vendor/github.com/valyala/quicktemplate/.travis.yml new file mode 100644 index 000000000..4a1c67736 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/.travis.yml @@ -0,0 +1,19 @@ +language: go + +go: + - 1.11.x + - 1.12.x + - tip + +before_install: + - go get -u github.com/valyala/quicktemplate/qtc + - go generate + +script: + # build test for supported platforms + - GOOS=linux go build + - GOOS=darwin go build + - GOOS=freebsd go build + + # run tests on a standard platform + - go test -v ./... diff --git a/vendor/github.com/valyala/quicktemplate/LICENSE b/vendor/github.com/valyala/quicktemplate/LICENSE new file mode 100644 index 000000000..f7c935c20 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 Aliaksandr Valialkin, VertaMedia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/valyala/quicktemplate/QuickTemplate.xml b/vendor/github.com/valyala/quicktemplate/QuickTemplate.xml new file mode 100644 index 000000000..700d55e81 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/QuickTemplate.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/github.com/valyala/quicktemplate/README.md b/vendor/github.com/valyala/quicktemplate/README.md new file mode 100644 index 000000000..3c104f40f --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/README.md @@ -0,0 +1,621 @@ +[![Build Status](https://travis-ci.org/valyala/quicktemplate.svg)](https://travis-ci.org/valyala/quicktemplate) +[![GoDoc](https://godoc.org/github.com/valyala/quicktemplate?status.svg)](http://godoc.org/github.com/valyala/quicktemplate) +[![Go Report Card](https://goreportcard.com/badge/github.com/valyala/quicktemplate)](https://goreportcard.com/report/github.com/valyala/quicktemplate) + +# quicktemplate + +A fast, powerful, yet easy to use template engine for Go. +Inspired by the [Mako templates](http://www.makotemplates.org/) philosophy. + +# Features + + * [Extremely fast](#performance-comparison-with-htmltemplate). + Templates are converted into Go code and then compiled. + * Quicktemplate syntax is very close to Go - there is no need to learn + yet another template language before starting to use quicktemplate. + * Almost all bugs are caught during template compilation, so production + suffers less from template-related bugs. + * Easy to use. See [quickstart](#quick-start) and [examples](https://github.com/valyala/quicktemplate/tree/master/examples) + for details. + * Powerful. Arbitrary Go code may be embedded into and mixed with templates. + Be careful with this power - do not query the database and/or external resources from + templates unless you miss the PHP way in Go :) This power is mostly for + arbitrary data transformations. + * Easy to use template inheritance powered by [Go interfaces](https://golang.org/doc/effective_go.html#interfaces). + See [this example](https://github.com/valyala/quicktemplate/tree/master/examples/basicserver) for details. + * Templates are compiled into a single binary, so there is no need to copy + template files to the server. + +# Drawbacks + + * Templates cannot be updated on the fly on the server, since they + are compiled into a single binary. + Take a look at [fasttemplate](https://github.com/valyala/fasttemplate) + if you need a fast template engine for simple dynamically updated templates. + +# Performance comparison with html/template + +Quicktemplate is more than 20x faster than [html/template](https://golang.org/pkg/html/template/). +The following simple template is used in the benchmark: + + * [html/template version](https://github.com/valyala/quicktemplate/blob/master/testdata/templates/bench.tpl) + * [quicktemplate version](https://github.com/valyala/quicktemplate/blob/master/testdata/templates/bench.qtpl) + +Benchmark results: + +``` +$ go test -bench='Benchmark(Quick|HTML)Template' -benchmem github.com/valyala/quicktemplate/tests +BenchmarkQuickTemplate1-4 10000000 120 ns/op 0 B/op 0 allocs/op +BenchmarkQuickTemplate10-4 3000000 441 ns/op 0 B/op 0 allocs/op +BenchmarkQuickTemplate100-4 300000 3945 ns/op 0 B/op 0 allocs/op +BenchmarkHTMLTemplate1-4 500000 2501 ns/op 752 B/op 23 allocs/op +BenchmarkHTMLTemplate10-4 100000 12442 ns/op 3521 B/op 117 allocs/op +BenchmarkHTMLTemplate100-4 10000 123392 ns/op 34498 B/op 1152 allocs/op +``` + +[goTemplateBenchmark](https://github.com/SlinSo/goTemplateBenchmark) compares QuickTemplate with numerous Go templating packages. QuickTemplate performs favorably. + +# Security + + * All template placeholders are HTML-escaped by default. + * Template placeholders for JSON strings prevent from ``-based + XSS attacks: + + ```qtpl + {% func FailedXSS() %} + + {% endfunc %} + ``` + +# Examples + +See [examples](https://github.com/valyala/quicktemplate/tree/master/examples). + +# Quick start + +First of all, install the `quicktemplate` package +and [quicktemplate compiler](https://github.com/valyala/quicktemplate/tree/master/qtc) (`qtc`): + +``` +go get -u github.com/valyala/quicktemplate +go get -u github.com/valyala/quicktemplate/qtc +``` + +Let's start with a minimal template example: + +```qtpl +All text outside function templates is treated as comments, +i.e. it is just ignored by quicktemplate compiler (`qtc`). It is for humans. + +Hello is a simple template function. +{% func Hello(name string) %} + Hello, {%s name %}! +{% endfunc %} +``` + +Save this file into a `templates` folder under the name `hello.qtpl` +and run `qtc` inside this folder. + +If everything went OK, `hello.qtpl.go` file should appear in the `templates` folder. +This file contains Go code for `hello.qtpl`. Let's use it! + +Create a file main.go outside `templates` folder and put the following +code there: + +```go +package main + +import ( + "fmt" + + "./templates" +) + +func main() { + fmt.Printf("%s\n", templates.Hello("Foo")) + fmt.Printf("%s\n", templates.Hello("Bar")) +} +``` + +Then issue `go run`. If everything went OK, you'll see something like this: + +``` + + Hello, Foo! + + + Hello, Bar! + +``` + +Let's create more a complex template which calls other template functions, +contains loops, conditions, breaks, continues and returns. +Put the following template into `templates/greetings.qtpl`: + +```qtpl + +Greetings greets up to 42 names. +It also greets John differently comparing to others. +{% func Greetings(names []string) %} + {% if len(names) == 0 %} + Nobody to greet :( + {% return %} + {% endif %} + + {% for i, name := range names %} + {% if i == 42 %} + I'm tired to greet so many people... + {% break %} + {% elseif name == "John" %} + {%= sayHi("Mr. " + name) %} + {% continue %} + {% else %} + {%= Hello(name) %} + {% endif %} + {% endfor %} +{% endfunc %} + +sayHi is unexported, since it starts with lowercase letter. +{% func sayHi(name string) %} + Hi, {%s name %} +{% endfunc %} + +Note that every template file may contain an arbitrary number +of template functions. For instance, this file contains Greetings and sayHi +functions. +``` + +Run `qtc` inside `templates` folder. Now the folder should contain +two files with Go code: `hello.qtpl.go` and `greetings.qtpl.go`. These files +form a single `templates` Go package. Template functions and other template +stuff is shared between template files located in the same folder. +So `Hello` template function may be used inside `greetings.qtpl` while +it is defined in `hello.qtpl`. +Moreover, the folder may contain ordinary Go files, so its contents may +be used inside templates and vice versa. +The package name inside template files may be overriden +with `{% package packageName %}`. + +Now put the following code into `main.go`: + +```go +package main + +import ( + "bytes" + "fmt" + + "./templates" +) + +func main() { + names := []string{"Kate", "Go", "John", "Brad"} + + // qtc creates Write* function for each template function. + // Such functions accept io.Writer as first parameter: + var buf bytes.Buffer + templates.WriteGreetings(&buf, names) + + fmt.Printf("buf=\n%s", buf.Bytes()) +} +``` + +Careful readers may notice different output tags were used in these +templates: `{%s name %}` and `{%= Hello(name) %}`. What's the difference? +The `{%s x %}` is used for printing HTML-safe strings, while `{%= F() %}` +is used for embedding template function calls. Quicktemplate supports also +other output tags: + + * `{%d num %}` for integers. + * `{%f float %}` for float64. + Floating point precision may be set via `{%f.precision float %}`. + For example, `{%f.2 1.2345 %}` outputs `1.23`. + * `{%z bytes %}` for byte slices. + * `{%q str %}` and `{%qz bytes %}` for JSON-compatible quoted strings. + * `{%j str %}` and `{%jz bytes %}` for embedding str into a JSON string. Unlike `{%q str %}`, + it doesn't quote the string. + * `{%u str %}` and `{%uz bytes %}` for [URL encoding](https://en.wikipedia.org/wiki/Percent-encoding) + the given str. + * `{%v anything %}` is equivalent to `%v` in [printf-like functions](https://golang.org/pkg/fmt/). + +All the output tags except `{%= F() %}` produce HTML-safe output, i.e. they +escape `<` to `<`, `>` to `>`, etc. If you don't want HTML-safe output, +then just put `=` after the tag. For example: `{%s= "

This h1 won't be escaped

" %}`. + +As you may notice `{%= F() %}` and `{%s= F() %}` produce the same output for `{% func F() %}`. +But the first one is optimized for speed - it avoids memory allocations and copies. +It is therefore recommended to stick to it when embedding template function calls. + +Additionally, the following extensions are supported for `{%= F() %}`: + + * `{%=h F() %}` produces html-escaped output. + * `{%=u F() %}` produces [URL-encoded](https://en.wikipedia.org/wiki/Percent-encoding) output. + * `{%=q F() %}` produces quoted json string. + * `{%=j F() %}` produces json string without quotes. + * `{%=uh F() %}` produces html-safe URL-encoded output. + * `{%=qh F() %}` produces html-safe quoted json string. + * `{%=jh F() %}` produces html-safe json string without quotes. + +All output tags except `{%= F() %}` family may contain arbitrary valid +Go expressions instead of just an identifier. For example: + +```qtpl +Import fmt for fmt.Sprintf() +{% import "fmt" %} + +FmtFunc uses fmt.Sprintf() inside output tag +{% func FmtFunc(s string) %} + {%s fmt.Sprintf("FmtFunc accepted %q string", s) %} +{% endfunc %} +``` + +There are other useful tags supported by quicktemplate: + + * `{% comment %}` + + ```qtpl + {% comment %} + This is a comment. It won't trap into the output. + It may contain {% arbitrary tags %}. They are just ignored. + {% endcomment %} + ``` + + * `{% plain %}` + + ```qtpl + {% plain %} + Tags will {% trap into %} the output {% unmodified %}. + Plain block may contain invalid and {% incomplete tags. + {% endplain %} + ``` + + * `{% collapsespace %}` + + ```qtpl + {% collapsespace %} +
+
space between lines
+ and {%s "tags" %} +
is collapsed into a single space + unless{% newline %}or{% space %}is used
+
+ {% endcollapsespace %} + ``` + + Is converted into: + + ``` +
space between lines
and tags
is collapsed into a single space unless + or is used
+ ``` + + * `{% stripspace %}` + + ```qtpl + {% stripspace %} +
+
space between lines
+ and {%s " tags" %} +
is removed unless{% newline %}or{% space %}is used
+
+ {% endstripspace %} + ``` + + Is converted into: + + ``` +
space between lines
and tags
is removed unless + or is used
+ ``` + + * `{% switch %}`, `{% case %}` and `{% default %}`: + + + ```qtpl + 1 + 1 = + {% switch 1+1 %} + {% case 2 %} + 2? + {% case 42 %} + 42! + {% default %} + I don't know :( + {% endswitch %} + ``` + + * `{% code %}`: + + ```qtpl + {% code + // arbitrary Go code may be embedded here! + type FooArg struct { + Name string + Age int + } + %} + ``` + + * `{% package %}`: + + ```qtpl + Override default package name with the custom name + {% package customPackageName %} + ``` + + * `{% import %}`: + + ```qtpl + Import external packages. + {% import "foo/bar" %} + {% import ( + "foo" + bar "baz/baa" + ) %} + ``` + + * `{% cat "/path/to/file" %}`: + + ```qtpl + Cat emits the given file contents as a plaintext: + {% func passwords() %} + /etc/passwd contents: + {% cat "/etc/passwd" %} + {% endfunc %} + ``` + + * `{% interface %}`: + + ```qtpl + Interfaces allow powerful templates' inheritance + {% + interface Page { + Title() + Body(s string, n int) + Footer() + } + %} + + PrintPage prints Page + {% func PrintPage(p Page) %} + + {%= p.Title() %} + +
{%= p.Body("foo", 42) %}
+
{%= p.Footer() %}
+ + + {% endfunc %} + + Base page implementation + {% code + type BasePage struct { + TitleStr string + FooterStr string + } + %} + {% func (bp *BasePage) Title() %}{%s bp.TitleStr %}{% endfunc %} + {% func (bp *BasePage) Body(s string, n int) %} + s={%q s %}, n={%d n %} + {% endfunc %} + {% func (bp *BasePage) Footer() %}{%s bp.FooterStr %}{% endfunc %} + + Main page implementation + {% code + type MainPage struct { + // inherit from BasePage + BasePage + + // real body for main page + BodyStr string + } + %} + + Override only Body + Title and Footer are used from BasePage. + {% func (mp *MainPage) Body(s string, n int) %} +
+ main body: {%s mp.BodyStr %} +
+
+ base body: {%= mp.BasePage.Body(s, n) %} +
+ {% endfunc %} + ``` + + See [basicserver example](https://github.com/valyala/quicktemplate/tree/master/examples/basicserver) + for more details. + +# Performance optimization tips + + * Prefer calling `WriteFoo` instead of `Foo` when generating template output + for `{% func Foo() %}`. This avoids unnesessary memory allocation and a copy + for a `string` returned from `Foo()`. + + * Prefer `{%= Foo() %}` instead of `{%s= Foo() %}` when embedding + a function template `{% func Foo() %}`. Though both approaches generate + identical output, the first approach is optimized for speed. + + * Prefer using existing output tags instead of passing `fmt.Sprintf` + to `{%s %}`. For instance, use `{%d num %}` instead + of `{%s fmt.Sprintf("%d", num) %}`, because the first approach is optimized + for speed. + + * Prefer using specific output tags instead of generic output tag + `{%v %}`. For example, use `{%s str %}` instead of `{%v str %}`, since + specific output tags are optimized for speed. + + * Prefer creating custom function templates instead of composing complex + strings by hands before passing them to `{%s %}`. + For instance, the first approach is slower than the second one: + + ```qtpl + {% func Foo(n int) %} + {% code + // construct complex string + complexStr := "" + for i := 0; i < n; i++ { + complexStr += fmt.Sprintf("num %d,", i) + } + %} + complex string = {%s= complexStr %} + {% endfunc %} + ``` + + ```qtpl + {% func Foo(n int) %} + complex string = {%= complexStr(n) %} + {% endfunc %} + + // Wrap complexStr func into stripspace for stripping unnesessary space + // between tags and lines. + {% stripspace %} + {% func complexStr(n int) %} + {% for i := 0; i < n; i++ %} + num{% space %}{%d i %}{% newline %} + {% endfor %} + {% endfunc %} + {% endstripspace %} + ``` + + * Make sure that the `io.Writer` passed to `Write*` functions + is [buffered](https://golang.org/pkg/bufio/#Writer). + This will minimize the number of `write` + [syscalls](https://en.wikipedia.org/wiki/System_call), + which may be quite expensive. + + Note: There is no need to wrap [fasthttp.RequestCtx](https://godoc.org/github.com/valyala/fasthttp#RequestCtx) + into [bufio.Writer](https://golang.org/pkg/bufio/#Writer), since it is already buffered. + + * [Profile](http://blog.golang.org/profiling-go-programs) your programs + for memory allocations and fix the most demanding functions based on + the output of `go tool pprof --alloc_objects`. + +# Use cases + +While the main quicktemplate purpose is generating HTML, it may be used +for generating other data too. For example, JSON and XML marshalling may +be easily implemented with quicktemplate: + +```qtpl +{% code +type MarshalRow struct { + Msg string + N int +} + +type MarshalData struct { + Foo int + Bar string + Rows []MarshalRow +} +%} + +// JSON marshaling +{% stripspace %} +{% func (d *MarshalData) JSON() %} +{ + "Foo": {%d d.Foo %}, + "Bar": {%q= d.Bar %}, + "Rows":[ + {% for i, r := range d.Rows %} + { + "Msg": {%q= r.Msg %}, + "N": {%d r.N %} + } + {% if i + 1 < len(d.Rows) %},{% endif %} + {% endfor %} + ] +} +{% endfunc %} +{% endstripspace %} + +// XML marshalling +{% stripspace %} +{% func (d *MarshalData) XML() %} + + {%d d.Foo %} + {%s d.Bar %} + + {% for _, r := range d.Rows %} + + {%s r.Msg %} + {%d r.N %} + + {% endfor %} + + +{% endfunc %} +{% endstripspace %} +``` + +Usually, marshalling built with quicktemplate works faster than the marshalling +implemented via standard [encoding/json](https://golang.org/pkg/encoding/json/) +and [encoding/xml](https://golang.org/pkg/encoding/xml/). +See the corresponding benchmark results: + +``` +go test -bench=Marshal -benchmem github.com/valyala/quicktemplate/tests +BenchmarkMarshalJSONStd1-4 3000000 480 ns/op 8 B/op 1 allocs/op +BenchmarkMarshalJSONStd10-4 1000000 1842 ns/op 8 B/op 1 allocs/op +BenchmarkMarshalJSONStd100-4 100000 15820 ns/op 8 B/op 1 allocs/op +BenchmarkMarshalJSONStd1000-4 10000 159327 ns/op 59 B/op 1 allocs/op +BenchmarkMarshalJSONQuickTemplate1-4 10000000 162 ns/op 0 B/op 0 allocs/op +BenchmarkMarshalJSONQuickTemplate10-4 2000000 748 ns/op 0 B/op 0 allocs/op +BenchmarkMarshalJSONQuickTemplate100-4 200000 6572 ns/op 0 B/op 0 allocs/op +BenchmarkMarshalJSONQuickTemplate1000-4 20000 66784 ns/op 29 B/op 0 allocs/op +BenchmarkMarshalXMLStd1-4 1000000 1652 ns/op 2 B/op 2 allocs/op +BenchmarkMarshalXMLStd10-4 200000 7533 ns/op 11 B/op 11 allocs/op +BenchmarkMarshalXMLStd100-4 20000 65763 ns/op 195 B/op 101 allocs/op +BenchmarkMarshalXMLStd1000-4 2000 663373 ns/op 3522 B/op 1002 allocs/op +BenchmarkMarshalXMLQuickTemplate1-4 10000000 145 ns/op 0 B/op 0 allocs/op +BenchmarkMarshalXMLQuickTemplate10-4 3000000 597 ns/op 0 B/op 0 allocs/op +BenchmarkMarshalXMLQuickTemplate100-4 300000 5833 ns/op 0 B/op 0 allocs/op +BenchmarkMarshalXMLQuickTemplate1000-4 30000 53000 ns/op 32 B/op 0 allocs/op +``` + +# FAQ + + * *Why is the quicktemplate syntax incompatible with [html/template](https://golang.org/pkg/html/template/)?* + + Because `html/template` syntax isn't expressive enough for `quicktemplate`. + + * *What's the difference between quicktemplate and [ego](https://github.com/benbjohnson/ego)?* + + `Ego` is similar to `quicktemplate` in the sense it converts templates into Go code. + But it misses the following stuff, which makes `quicktemplate` so powerful + and easy to use: + + * Defining multiple function templates in a single template file. + * Embedding function templates inside other function templates. + * Template interfaces, inheritance and overriding. + See [this example](https://github.com/valyala/quicktemplate/tree/master/examples/basicserver) + for details. + * Top-level comments outside function templates. + * Template packages. + * Combining arbitrary Go files with template files in template packages. + * Performance optimizations. + + * *What's the difference between quicktemplate and [gorazor](https://github.com/sipin/gorazor)?* + + `Gorazor` is similar to `quicktemplate` in the sense it converts templates into Go code. + But it misses the following useful features: + + * Clear syntax insead of hard-to-understand magic stuff related + to template arguments, template inheritance and embedding function + templates into other templates. + * Performance optimizations. + +* *Is there a syntax highlighting for qtpl files?* + + Yes - see [this issue](https://github.com/valyala/quicktemplate/issues/19) for details. + If you are using JetBrains products (syntax highlighting and autocomplete): + * cd [JetBrains settings directory](https://intellij-support.jetbrains.com/hc/en-us/articles/206544519-Directories-used-by-the-IDE-to-store-settings-caches-plugins-and-logs) + * mkdir -p filetypes && cd filetypes + * curl https://raw.githubusercontent.com/valyala/quicktemplate/master/QuickTemplate.xml >> QuickTemplate.xml + * Restart your IDE + +* *I didn't find an answer for my question here.* + + Try exploring [these questions](https://github.com/valyala/quicktemplate/issues?q=label%3Aquestion). diff --git a/vendor/github.com/valyala/quicktemplate/bytebuffer.go b/vendor/github.com/valyala/quicktemplate/bytebuffer.go new file mode 100644 index 000000000..47d88f78e --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/bytebuffer.go @@ -0,0 +1,45 @@ +package quicktemplate + +import ( + "github.com/valyala/bytebufferpool" +) + +// ByteBuffer implements io.Writer on top of byte slice. +// +// Recycle byte buffers via AcquireByteBuffer and ReleaseByteBuffer +// in order to reduce memory allocations. +// +// Deprecated: use github.com/valyala/bytebufferpool instead. +type ByteBuffer bytebufferpool.ByteBuffer + +// Write implements io.Writer. +func (b *ByteBuffer) Write(p []byte) (int, error) { + return bb(b).Write(p) +} + +// Reset resets the byte buffer. +func (b *ByteBuffer) Reset() { + bb(b).Reset() +} + +// AcquireByteBuffer returns new ByteBuffer from the pool. +// +// Return unneeded buffers to the pool by calling ReleaseByteBuffer +// in order to reduce memory allocations. +func AcquireByteBuffer() *ByteBuffer { + return (*ByteBuffer)(byteBufferPool.Get()) +} + +// ReleaseByteBuffer retruns byte buffer to the pool. +// +// Do not access byte buffer after returning it to the pool, +// otherwise data races may occur. +func ReleaseByteBuffer(b *ByteBuffer) { + byteBufferPool.Put(bb(b)) +} + +func bb(b *ByteBuffer) *bytebufferpool.ByteBuffer { + return (*bytebufferpool.ByteBuffer)(b) +} + +var byteBufferPool bytebufferpool.Pool diff --git a/vendor/github.com/valyala/quicktemplate/doc.go b/vendor/github.com/valyala/quicktemplate/doc.go new file mode 100644 index 000000000..14cb5ffb7 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/doc.go @@ -0,0 +1,6 @@ +/* +Package quicktemplate provides fast and powerful template engine. + +See https://github.com/valyala/quicktemplate for details. +*/ +package quicktemplate diff --git a/vendor/github.com/valyala/quicktemplate/go.mod b/vendor/github.com/valyala/quicktemplate/go.mod new file mode 100644 index 000000000..ab6fd16ea --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/go.mod @@ -0,0 +1,8 @@ +module github.com/valyala/quicktemplate + +require ( + github.com/klauspost/compress v1.4.1 // indirect + github.com/klauspost/cpuid v1.2.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 + github.com/valyala/fasthttp v1.2.0 +) diff --git a/vendor/github.com/valyala/quicktemplate/go.sum b/vendor/github.com/valyala/quicktemplate/go.sum new file mode 100644 index 000000000..c868cd17f --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/go.sum @@ -0,0 +1,12 @@ +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.4.1 h1:8VMb5+0wMgdBykOV96DwNwKFQ+WTI4pzYURP99CcB9E= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.2.0 h1:dzZJf2IuMiclVjdw0kkT+f9u4YdrapbNyGAN47E/qnk= +github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= diff --git a/vendor/github.com/valyala/quicktemplate/htmlescapewriter.go b/vendor/github.com/valyala/quicktemplate/htmlescapewriter.go new file mode 100644 index 000000000..77560b411 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/htmlescapewriter.go @@ -0,0 +1,62 @@ +package quicktemplate + +import ( + "bytes" + "io" +) + +type htmlEscapeWriter struct { + w io.Writer +} + +func (w *htmlEscapeWriter) Write(b []byte) (int, error) { + if bytes.IndexByte(b, '<') < 0 && + bytes.IndexByte(b, '>') < 0 && + bytes.IndexByte(b, '"') < 0 && + bytes.IndexByte(b, '\'') < 0 && + bytes.IndexByte(b, '&') < 0 { + + // fast path - nothing to escape + return w.w.Write(b) + } + + // slow path + write := w.w.Write + j := 0 + for i, c := range b { + switch c { + case '<': + write(b[j:i]) + write(strLT) + j = i + 1 + case '>': + write(b[j:i]) + write(strGT) + j = i + 1 + case '"': + write(b[j:i]) + write(strQuot) + j = i + 1 + case '\'': + write(b[j:i]) + write(strApos) + j = i + 1 + case '&': + write(b[j:i]) + write(strAmp) + j = i + 1 + } + } + if n, err := write(b[j:]); err != nil { + return j + n, err + } + return len(b), nil +} + +var ( + strLT = []byte("<") + strGT = []byte(">") + strQuot = []byte(""") + strApos = []byte("'") + strAmp = []byte("&") +) diff --git a/vendor/github.com/valyala/quicktemplate/jsonstring.go b/vendor/github.com/valyala/quicktemplate/jsonstring.go new file mode 100644 index 000000000..dac862c8a --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/jsonstring.go @@ -0,0 +1,93 @@ +package quicktemplate + +import ( + "io" + "strings" +) + +func writeJSONString(w io.Writer, s string) { + if len(s) > 24 && + strings.IndexByte(s, '"') < 0 && + strings.IndexByte(s, '\\') < 0 && + strings.IndexByte(s, '\n') < 0 && + strings.IndexByte(s, '\r') < 0 && + strings.IndexByte(s, '\t') < 0 && + strings.IndexByte(s, '\f') < 0 && + strings.IndexByte(s, '\b') < 0 && + strings.IndexByte(s, '<') < 0 && + strings.IndexByte(s, '\'') < 0 && + strings.IndexByte(s, 0) < 0 { + + // fast path - nothing to escape + w.Write(unsafeStrToBytes(s)) + return + } + + // slow path + write := w.Write + b := unsafeStrToBytes(s) + j := 0 + n := len(b) + if n > 0 { + // Hint the compiler to remove bounds checks in the loop below. + _ = b[n-1] + } + for i := 0; i < n; i++ { + switch b[i] { + case '"': + write(b[j:i]) + write(strBackslashQuote) + j = i + 1 + case '\\': + write(b[j:i]) + write(strBackslashBackslash) + j = i + 1 + case '\n': + write(b[j:i]) + write(strBackslashN) + j = i + 1 + case '\r': + write(b[j:i]) + write(strBackslashR) + j = i + 1 + case '\t': + write(b[j:i]) + write(strBackslashT) + j = i + 1 + case '\f': + write(b[j:i]) + write(strBackslashF) + j = i + 1 + case '\b': + write(b[j:i]) + write(strBackslashB) + j = i + 1 + case '<': + write(b[j:i]) + write(strBackslashLT) + j = i + 1 + case '\'': + write(b[j:i]) + write(strBackslashQ) + j = i + 1 + case 0: + write(b[j:i]) + write(strBackslashZero) + j = i + 1 + } + } + write(b[j:]) +} + +var ( + strBackslashQuote = []byte(`\"`) + strBackslashBackslash = []byte(`\\`) + strBackslashN = []byte(`\n`) + strBackslashR = []byte(`\r`) + strBackslashT = []byte(`\t`) + strBackslashF = []byte(`\u000c`) + strBackslashB = []byte(`\u0008`) + strBackslashLT = []byte(`\u003c`) + strBackslashQ = []byte(`\u0027`) + strBackslashZero = []byte(`\u0000`) +) diff --git a/vendor/github.com/valyala/quicktemplate/urlencode.go b/vendor/github.com/valyala/quicktemplate/urlencode.go new file mode 100644 index 000000000..33113ba17 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/urlencode.go @@ -0,0 +1,32 @@ +package quicktemplate + +func appendURLEncode(dst []byte, src string) []byte { + n := len(src) + if n > 0 { + // Hint the compiler to remove bounds checks in the loop below. + _ = src[n-1] + } + for i := 0; i < n; i++ { + c := src[i] + + // See http://www.w3.org/TR/html5/forms.html#form-submission-algorithm + if c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || + c == '-' || c == '.' || c == '_' { + dst = append(dst, c) + } else { + if c == ' ' { + dst = append(dst, '+') + } else { + dst = append(dst, '%', hexCharUpper(c>>4), hexCharUpper(c&15)) + } + } + } + return dst +} + +func hexCharUpper(c byte) byte { + if c < 10 { + return '0' + c + } + return c - 10 + 'A' +} diff --git a/vendor/github.com/valyala/quicktemplate/util.go b/vendor/github.com/valyala/quicktemplate/util.go new file mode 100644 index 000000000..8476ff552 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/util.go @@ -0,0 +1,3 @@ +package quicktemplate + +//go:generate qtc -dir=testdata/templates diff --git a/vendor/github.com/valyala/quicktemplate/util_appengine.go b/vendor/github.com/valyala/quicktemplate/util_appengine.go new file mode 100644 index 000000000..7642bf7df --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/util_appengine.go @@ -0,0 +1,11 @@ +// +build appengine appenginevm + +package quicktemplate + +func unsafeStrToBytes(s string) []byte { + return []byte(s) +} + +func unsafeBytesToStr(z []byte) string { + return string(z) +} diff --git a/vendor/github.com/valyala/quicktemplate/util_noappengine.go b/vendor/github.com/valyala/quicktemplate/util_noappengine.go new file mode 100644 index 000000000..166396ea8 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/util_noappengine.go @@ -0,0 +1,22 @@ +// +build !appengine,!appenginevm + +package quicktemplate + +import ( + "reflect" + "unsafe" +) + +func unsafeStrToBytes(s string) []byte { + sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) + bh := reflect.SliceHeader{ + Data: sh.Data, + Len: sh.Len, + Cap: sh.Len, + } + return *(*[]byte)(unsafe.Pointer(&bh)) +} + +func unsafeBytesToStr(z []byte) string { + return *(*string)(unsafe.Pointer(&z)) +} diff --git a/vendor/github.com/valyala/quicktemplate/writer.go b/vendor/github.com/valyala/quicktemplate/writer.go new file mode 100644 index 000000000..0a83a43e1 --- /dev/null +++ b/vendor/github.com/valyala/quicktemplate/writer.go @@ -0,0 +1,188 @@ +package quicktemplate + +import ( + "fmt" + "io" + "strconv" + "sync" +) + +// Writer implements auxiliary writer used by quicktemplate functions. +// +// Use AcquireWriter for creating new writers. +type Writer struct { + e QWriter + n QWriter +} + +// W returns the underlying writer passed to AcquireWriter. +func (qw *Writer) W() io.Writer { + return qw.n.w +} + +// E returns QWriter with enabled html escaping. +func (qw *Writer) E() *QWriter { + return &qw.e +} + +// N returns QWriter without html escaping. +func (qw *Writer) N() *QWriter { + return &qw.n +} + +// AcquireWriter returns new writer from the pool. +// +// Return unneeded writer to the pool by calling ReleaseWriter +// in order to reduce memory allocations. +func AcquireWriter(w io.Writer) *Writer { + v := writerPool.Get() + if v == nil { + qw := &Writer{} + qw.e.w = &htmlEscapeWriter{} + v = qw + } + qw := v.(*Writer) + qw.e.w.(*htmlEscapeWriter).w = w + qw.n.w = w + return qw +} + +// ReleaseWriter returns the writer to the pool. +// +// Do not access released writer, otherwise data races may occur. +func ReleaseWriter(qw *Writer) { + hw := qw.e.w.(*htmlEscapeWriter) + hw.w = nil + qw.e.Reset() + qw.e.w = hw + + qw.n.Reset() + + writerPool.Put(qw) +} + +var writerPool sync.Pool + +// QWriter is auxiliary writer used by Writer. +type QWriter struct { + w io.Writer + err error + b []byte +} + +// Write implements io.Writer. +func (w *QWriter) Write(p []byte) (int, error) { + if w.err != nil { + return 0, w.err + } + n, err := w.w.Write(p) + if err != nil { + w.err = err + } + return n, err +} + +// Reset resets QWriter to the original state. +func (w *QWriter) Reset() { + w.w = nil + w.err = nil +} + +// S writes s to w. +func (w *QWriter) S(s string) { + w.Write(unsafeStrToBytes(s)) +} + +// Z writes z to w. +func (w *QWriter) Z(z []byte) { + w.Write(z) +} + +// SZ is a synonym to Z. +func (w *QWriter) SZ(z []byte) { + w.Write(z) +} + +// D writes n to w. +func (w *QWriter) D(n int) { + bb, ok := w.w.(*ByteBuffer) + if ok { + bb.B = strconv.AppendInt(bb.B, int64(n), 10) + } else { + w.b = strconv.AppendInt(w.b[:0], int64(n), 10) + w.Write(w.b) + } +} + +// F writes f to w. +func (w *QWriter) F(f float64) { + n := int(f) + if float64(n) == f { + // Fast path - just int. + w.D(n) + return + } + + // Slow path. + w.FPrec(f, -1) +} + +// FPrec writes f to w using the given floating point precision. +func (w *QWriter) FPrec(f float64, prec int) { + bb, ok := w.w.(*ByteBuffer) + if ok { + bb.B = strconv.AppendFloat(bb.B, f, 'f', prec, 64) + } else { + w.b = strconv.AppendFloat(w.b[:0], f, 'f', prec, 64) + w.Write(w.b) + } +} + +// Q writes quoted json-safe s to w. +func (w *QWriter) Q(s string) { + w.Write(strQuote) + writeJSONString(w, s) + w.Write(strQuote) +} + +var strQuote = []byte(`"`) + +// QZ writes quoted json-safe z to w. +func (w *QWriter) QZ(z []byte) { + w.Q(unsafeBytesToStr(z)) +} + +// J writes json-safe s to w. +// +// Unlike Q it doesn't qoute resulting s. +func (w *QWriter) J(s string) { + writeJSONString(w, s) +} + +// JZ writes json-safe z to w. +// +// Unlike Q it doesn't qoute resulting z. +func (w *QWriter) JZ(z []byte) { + w.J(unsafeBytesToStr(z)) +} + +// V writes v to w. +func (w *QWriter) V(v interface{}) { + fmt.Fprintf(w, "%v", v) +} + +// U writes url-encoded s to w. +func (w *QWriter) U(s string) { + bb, ok := w.w.(*ByteBuffer) + if ok { + bb.B = appendURLEncode(bb.B, s) + } else { + w.b = appendURLEncode(w.b[:0], s) + w.Write(w.b) + } +} + +// UZ writes url-encoded z to w. +func (w *QWriter) UZ(z []byte) { + w.U(unsafeBytesToStr(z)) +} diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS new file mode 100644 index 000000000..15167cd74 --- /dev/null +++ b/vendor/golang.org/x/sys/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS new file mode 100644 index 000000000..1c4577e96 --- /dev/null +++ b/vendor/golang.org/x/sys/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE new file mode 100644 index 000000000..6a66aea5e --- /dev/null +++ b/vendor/golang.org/x/sys/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/vendor/golang.org/x/sys/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/sys/unix/.gitignore b/vendor/golang.org/x/sys/unix/.gitignore new file mode 100644 index 000000000..e3e0fc6f8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/.gitignore @@ -0,0 +1,2 @@ +_obj/ +unix.test diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md new file mode 100644 index 000000000..eb2f78ae2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/README.md @@ -0,0 +1,173 @@ +# Building `sys/unix` + +The sys/unix package provides access to the raw system call interface of the +underlying operating system. See: https://godoc.org/golang.org/x/sys/unix + +Porting Go to a new architecture/OS combination or adding syscalls, types, or +constants to an existing architecture/OS pair requires some manual effort; +however, there are tools that automate much of the process. + +## Build Systems + +There are currently two ways we generate the necessary files. We are currently +migrating the build system to use containers so the builds are reproducible. +This is being done on an OS-by-OS basis. Please update this documentation as +components of the build system change. + +### Old Build System (currently for `GOOS != "linux"`) + +The old build system generates the Go files based on the C header files +present on your system. This means that files +for a given GOOS/GOARCH pair must be generated on a system with that OS and +architecture. This also means that the generated code can differ from system +to system, based on differences in the header files. + +To avoid this, if you are using the old build system, only generate the Go +files on an installation with unmodified header files. It is also important to +keep track of which version of the OS the files were generated from (ex. +Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes +and have each OS upgrade correspond to a single change. + +To build the files for your current OS and architecture, make sure GOOS and +GOARCH are set correctly and run `mkall.sh`. This will generate the files for +your specific system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, go + +### New Build System (currently for `GOOS == "linux"`) + +The new build system uses a Docker container to generate the go files directly +from source checkouts of the kernel and various system libraries. This means +that on any platform that supports Docker, all the files using the new build +system can be generated at once, and generated files will not change based on +what the person running the scripts has installed on their computer. + +The OS specific files for the new build system are located in the `${GOOS}` +directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When +the kernel or system library updates, modify the Dockerfile at +`${GOOS}/Dockerfile` to checkout the new release of the source. + +To build all the files under the new build system, you must be on an amd64/Linux +system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will +then generate all of the files for all of the GOOS/GOARCH pairs in the new build +system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, go, docker + +## Component files + +This section describes the various files used in the code generation process. +It also contains instructions on how to modify these files to add a new +architecture/OS or to add additional syscalls, types, or constants. Note that +if you are using the new build system, the scripts/programs cannot be called normally. +They must be called from within the docker container. + +### asm files + +The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system +call dispatch. There are three entry points: +``` + func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) + func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) + func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) +``` +The first and second are the standard ones; they differ only in how many +arguments can be passed to the kernel. The third is for low-level use by the +ForkExec wrapper. Unlike the first two, it does not call into the scheduler to +let it know that a system call is running. + +When porting Go to an new architecture/OS, this file must be implemented for +each GOOS/GOARCH pair. + +### mksysnum + +Mksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go` +for the old system). This program takes in a list of header files containing the +syscall number declarations and parses them to produce the corresponding list of +Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated +constants. + +Adding new syscall numbers is mostly done by running the build on a sufficiently +new installation of the target OS (or updating the source checkouts for the +new build system). However, depending on the OS, you make need to update the +parsing in mksysnum. + +### mksyscall.go + +The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are +hand-written Go files which implement system calls (for unix, the specific OS, +or the specific OS/Architecture pair respectively) that need special handling +and list `//sys` comments giving prototypes for ones that can be generated. + +The mksyscall.go program takes the `//sys` and `//sysnb` comments and converts +them into syscalls. This requires the name of the prototype in the comment to +match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function +prototype can be exported (capitalized) or not. + +Adding a new syscall often just requires adding a new `//sys` function prototype +with the desired arguments and a capitalized name so it is exported. However, if +you want the interface to the syscall to be different, often one will make an +unexported `//sys` prototype, an then write a custom wrapper in +`syscall_${GOOS}.go`. + +### types files + +For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or +`types_${GOOS}.go` on the old system). This file includes standard C headers and +creates Go type aliases to the corresponding C types. The file is then fed +through godef to get the Go compatible definitions. Finally, the generated code +is fed though mkpost.go to format the code correctly and remove any hidden or +private identifiers. This cleaned-up code is written to +`ztypes_${GOOS}_${GOARCH}.go`. + +The hardest part about preparing this file is figuring out which headers to +include and which symbols need to be `#define`d to get the actual data +structures that pass through to the kernel system calls. Some C libraries +preset alternate versions for binary compatibility and translate them on the +way in and out of system calls, but there is almost always a `#define` that can +get the real ones. +See `types_darwin.go` and `linux/types.go` for examples. + +To add a new type, add in the necessary include statement at the top of the +file (if it is not already there) and add in a type alias line. Note that if +your type is significantly different on different architectures, you may need +some `#if/#elif` macros in your include statements. + +### mkerrors.sh + +This script is used to generate the system's various constants. This doesn't +just include the error numbers and error strings, but also the signal numbers +an a wide variety of miscellaneous constants. The constants come from the list +of include files in the `includes_${uname}` variable. A regex then picks out +the desired `#define` statements, and generates the corresponding Go constants. +The error numbers and strings are generated from `#include `, and the +signal numbers and strings are generated from `#include `. All of +these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program, +`_errors.c`, which prints out all the constants. + +To add a constant, add the header that includes it to the appropriate variable. +Then, edit the regex (if necessary) to match the desired constant. Avoid making +the regex too broad to avoid matching unintended constants. + + +## Generated files + +### `zerror_${GOOS}_${GOARCH}.go` + +A file containing all of the system's generated error numbers, error strings, +signal numbers, and constants. Generated by `mkerrors.sh` (see above). + +### `zsyscall_${GOOS}_${GOARCH}.go` + +A file containing all the generated syscalls for a specific GOOS and GOARCH. +Generated by `mksyscall.go` (see above). + +### `zsysnum_${GOOS}_${GOARCH}.go` + +A list of numeric constants for all the syscall number of the specific GOOS +and GOARCH. Generated by mksysnum (see above). + +### `ztypes_${GOOS}_${GOARCH}.go` + +A file containing Go types for passing into (or returning from) syscalls. +Generated by godefs and the types file (see above). diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go new file mode 100644 index 000000000..72afe3338 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/affinity_linux.go @@ -0,0 +1,124 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// CPU affinity functions + +package unix + +import ( + "unsafe" +) + +const cpuSetSize = _CPU_SETSIZE / _NCPUBITS + +// CPUSet represents a CPU affinity mask. +type CPUSet [cpuSetSize]cpuMask + +func schedAffinity(trap uintptr, pid int, set *CPUSet) error { + _, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set))) + if e != 0 { + return errnoErr(e) + } + return nil +} + +// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid. +// If pid is 0 the calling thread is used. +func SchedGetaffinity(pid int, set *CPUSet) error { + return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set) +} + +// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid. +// If pid is 0 the calling thread is used. +func SchedSetaffinity(pid int, set *CPUSet) error { + return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set) +} + +// Zero clears the set s, so that it contains no CPUs. +func (s *CPUSet) Zero() { + for i := range s { + s[i] = 0 + } +} + +func cpuBitsIndex(cpu int) int { + return cpu / _NCPUBITS +} + +func cpuBitsMask(cpu int) cpuMask { + return cpuMask(1 << (uint(cpu) % _NCPUBITS)) +} + +// Set adds cpu to the set s. +func (s *CPUSet) Set(cpu int) { + i := cpuBitsIndex(cpu) + if i < len(s) { + s[i] |= cpuBitsMask(cpu) + } +} + +// Clear removes cpu from the set s. +func (s *CPUSet) Clear(cpu int) { + i := cpuBitsIndex(cpu) + if i < len(s) { + s[i] &^= cpuBitsMask(cpu) + } +} + +// IsSet reports whether cpu is in the set s. +func (s *CPUSet) IsSet(cpu int) bool { + i := cpuBitsIndex(cpu) + if i < len(s) { + return s[i]&cpuBitsMask(cpu) != 0 + } + return false +} + +// Count returns the number of CPUs in the set s. +func (s *CPUSet) Count() int { + c := 0 + for _, b := range s { + c += onesCount64(uint64(b)) + } + return c +} + +// onesCount64 is a copy of Go 1.9's math/bits.OnesCount64. +// Once this package can require Go 1.9, we can delete this +// and update the caller to use bits.OnesCount64. +func onesCount64(x uint64) int { + const m0 = 0x5555555555555555 // 01010101 ... + const m1 = 0x3333333333333333 // 00110011 ... + const m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ... + const m3 = 0x00ff00ff00ff00ff // etc. + const m4 = 0x0000ffff0000ffff + + // Implementation: Parallel summing of adjacent bits. + // See "Hacker's Delight", Chap. 5: Counting Bits. + // The following pattern shows the general approach: + // + // x = x>>1&(m0&m) + x&(m0&m) + // x = x>>2&(m1&m) + x&(m1&m) + // x = x>>4&(m2&m) + x&(m2&m) + // x = x>>8&(m3&m) + x&(m3&m) + // x = x>>16&(m4&m) + x&(m4&m) + // x = x>>32&(m5&m) + x&(m5&m) + // return int(x) + // + // Masking (& operations) can be left away when there's no + // danger that a field's sum will carry over into the next + // field: Since the result cannot be > 64, 8 bits is enough + // and we can ignore the masks for the shifts by 8 and up. + // Per "Hacker's Delight", the first line can be simplified + // more, but it saves at best one instruction, so we leave + // it alone for clarity. + const m = 1<<64 - 1 + x = x>>1&(m0&m) + x&(m0&m) + x = x>>2&(m1&m) + x&(m1&m) + x = (x>>4 + x) & (m2 & m) + x += x >> 8 + x += x >> 16 + x += x >> 32 + return int(x) & (1<<7 - 1) +} diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go new file mode 100644 index 000000000..951fce4d0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +// +build go1.9 + +package unix + +import "syscall" + +type Signal = syscall.Signal +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s new file mode 100644 index 000000000..06f84b855 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_386.s b/vendor/golang.org/x/sys/unix/asm_darwin_386.s new file mode 100644 index 000000000..8a7278319 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_darwin_386.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for 386, Darwin +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s b/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s new file mode 100644 index 000000000..6321421f2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for AMD64, Darwin +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm.s new file mode 100644 index 000000000..333242d50 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_darwin_arm.s @@ -0,0 +1,30 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo +// +build arm,darwin + +#include "textflag.h" + +// +// System call support for ARM, Darwin +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s new file mode 100644 index 000000000..97e017437 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s @@ -0,0 +1,30 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo +// +build arm64,darwin + +#include "textflag.h" + +// +// System call support for AMD64, Darwin +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s new file mode 100644 index 000000000..603dd5728 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for AMD64, DragonFly +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_386.s b/vendor/golang.org/x/sys/unix/asm_freebsd_386.s new file mode 100644 index 000000000..c9a0a2601 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_freebsd_386.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for 386, FreeBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s new file mode 100644 index 000000000..35172477c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for AMD64, FreeBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s new file mode 100644 index 000000000..9227c875b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s @@ -0,0 +1,29 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for ARM, FreeBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s new file mode 100644 index 000000000..d9318cbf0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for ARM64, FreeBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s new file mode 100644 index 000000000..448bebbb5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_386.s @@ -0,0 +1,65 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for 386, Linux +// + +// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80 +// instead of the glibc-specific "CALL 0x10(GS)". +#define INVOKE_SYSCALL INT $0x80 + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + CALL runtime·entersyscall(SB) + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL a2+8(FP), CX + MOVL a3+12(FP), DX + MOVL $0, SI + MOVL $0, DI + INVOKE_SYSCALL + MOVL AX, r1+16(FP) + MOVL DX, r2+20(FP) + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL a2+8(FP), CX + MOVL a3+12(FP), DX + MOVL $0, SI + MOVL $0, DI + INVOKE_SYSCALL + MOVL AX, r1+16(FP) + MOVL DX, r2+20(FP) + RET + +TEXT ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 + JMP syscall·rawsocketcall(SB) + +TEXT ·seek(SB),NOSPLIT,$0-28 + JMP syscall·seek(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s new file mode 100644 index 000000000..c6468a958 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s @@ -0,0 +1,57 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for AMD64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOVQ a1+8(FP), DI + MOVQ a2+16(FP), SI + MOVQ a3+24(FP), DX + MOVQ $0, R10 + MOVQ $0, R8 + MOVQ $0, R9 + MOVQ trap+0(FP), AX // syscall entry + SYSCALL + MOVQ AX, r1+32(FP) + MOVQ DX, r2+40(FP) + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVQ a1+8(FP), DI + MOVQ a2+16(FP), SI + MOVQ a3+24(FP), DX + MOVQ $0, R10 + MOVQ $0, R8 + MOVQ $0, R9 + MOVQ trap+0(FP), AX // syscall entry + SYSCALL + MOVQ AX, r1+32(FP) + MOVQ DX, r2+40(FP) + RET + +TEXT ·gettimeofday(SB),NOSPLIT,$0-16 + JMP syscall·gettimeofday(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s new file mode 100644 index 000000000..cf0f3575c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_arm.s @@ -0,0 +1,56 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for arm, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + BL runtime·entersyscall(SB) + MOVW trap+0(FP), R7 + MOVW a1+4(FP), R0 + MOVW a2+8(FP), R1 + MOVW a3+12(FP), R2 + MOVW $0, R3 + MOVW $0, R4 + MOVW $0, R5 + SWI $0 + MOVW R0, r1+16(FP) + MOVW $0, R0 + MOVW R0, r2+20(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVW trap+0(FP), R7 // syscall entry + MOVW a1+4(FP), R0 + MOVW a2+8(FP), R1 + MOVW a3+12(FP), R2 + SWI $0 + MOVW R0, r1+16(FP) + MOVW $0, R0 + MOVW R0, r2+20(FP) + RET + +TEXT ·seek(SB),NOSPLIT,$0-28 + B syscall·seek(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s new file mode 100644 index 000000000..afe6fdf6b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s @@ -0,0 +1,52 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build arm64 +// +build !gccgo + +#include "textflag.h" + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + B syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R0 + MOVD a2+16(FP), R1 + MOVD a3+24(FP), R2 + MOVD $0, R3 + MOVD $0, R4 + MOVD $0, R5 + MOVD trap+0(FP), R8 // syscall entry + SVC + MOVD R0, r1+32(FP) // r1 + MOVD R1, r2+40(FP) // r2 + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + B syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R0 + MOVD a2+16(FP), R1 + MOVD a3+24(FP), R2 + MOVD $0, R3 + MOVD $0, R4 + MOVD $0, R5 + MOVD trap+0(FP), R8 // syscall entry + SVC + MOVD R0, r1+32(FP) + MOVD R1, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s new file mode 100644 index 000000000..ab9d63831 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s @@ -0,0 +1,56 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips64 mips64le +// +build !gccgo + +#include "textflag.h" + +// +// System calls for mips64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R2 // syscall entry + SYSCALL + MOVV R2, r1+32(FP) + MOVV R3, r2+40(FP) + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R2 // syscall entry + SYSCALL + MOVV R2, r1+32(FP) + MOVV R3, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s new file mode 100644 index 000000000..99e539904 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s @@ -0,0 +1,54 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips mipsle +// +build !gccgo + +#include "textflag.h" + +// +// System calls for mips, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + JAL runtime·entersyscall(SB) + MOVW a1+4(FP), R4 + MOVW a2+8(FP), R5 + MOVW a3+12(FP), R6 + MOVW R0, R7 + MOVW trap+0(FP), R2 // syscall entry + SYSCALL + MOVW R2, r1+16(FP) // r1 + MOVW R3, r2+20(FP) // r2 + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVW a1+4(FP), R4 + MOVW a2+8(FP), R5 + MOVW a3+12(FP), R6 + MOVW trap+0(FP), R2 // syscall entry + SYSCALL + MOVW R2, r1+16(FP) + MOVW R3, r2+20(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s new file mode 100644 index 000000000..88f712557 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s @@ -0,0 +1,44 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64 ppc64le +// +build !gccgo + +#include "textflag.h" + +// +// System calls for ppc64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R3 + MOVD a2+16(FP), R4 + MOVD a3+24(FP), R5 + MOVD R0, R6 + MOVD R0, R7 + MOVD R0, R8 + MOVD trap+0(FP), R9 // syscall entry + SYSCALL R9 + MOVD R3, r1+32(FP) + MOVD R4, r2+40(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R3 + MOVD a2+16(FP), R4 + MOVD a3+24(FP), R5 + MOVD R0, R6 + MOVD R0, R7 + MOVD R0, R8 + MOVD trap+0(FP), R9 // syscall entry + SYSCALL R9 + MOVD R3, r1+32(FP) + MOVD R4, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s new file mode 100644 index 000000000..a5a863c6b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s @@ -0,0 +1,56 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build s390x +// +build linux +// +build !gccgo + +#include "textflag.h" + +// +// System calls for s390x, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + BR syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + BR syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R2 + MOVD a2+16(FP), R3 + MOVD a3+24(FP), R4 + MOVD $0, R5 + MOVD $0, R6 + MOVD $0, R7 + MOVD trap+0(FP), R1 // syscall entry + SYSCALL + MOVD R2, r1+32(FP) + MOVD R3, r2+40(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + BR syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + BR syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R2 + MOVD a2+16(FP), R3 + MOVD a3+24(FP), R4 + MOVD $0, R5 + MOVD $0, R6 + MOVD $0, R7 + MOVD trap+0(FP), R1 // syscall entry + SYSCALL + MOVD R2, r1+32(FP) + MOVD R3, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_386.s b/vendor/golang.org/x/sys/unix/asm_netbsd_386.s new file mode 100644 index 000000000..48bdcd763 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_netbsd_386.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for 386, NetBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s new file mode 100644 index 000000000..2ede05c72 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for AMD64, NetBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s new file mode 100644 index 000000000..e8928571c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s @@ -0,0 +1,29 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for ARM, NetBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s new file mode 100644 index 000000000..6f98ba5a3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for ARM64, NetBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_386.s b/vendor/golang.org/x/sys/unix/asm_openbsd_386.s new file mode 100644 index 000000000..00576f3c8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_386.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for 386, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s new file mode 100644 index 000000000..790ef77f8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s @@ -0,0 +1,29 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for AMD64, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s new file mode 100644 index 000000000..469bfa100 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for ARM, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s new file mode 100644 index 000000000..0cedea3d3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for arm64, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s new file mode 100644 index 000000000..ded8260f3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s @@ -0,0 +1,17 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go +// + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/vendor/golang.org/x/sys/unix/bluetooth_linux.go new file mode 100644 index 000000000..6e3229697 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/bluetooth_linux.go @@ -0,0 +1,35 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Bluetooth sockets and messages + +package unix + +// Bluetooth Protocols +const ( + BTPROTO_L2CAP = 0 + BTPROTO_HCI = 1 + BTPROTO_SCO = 2 + BTPROTO_RFCOMM = 3 + BTPROTO_BNEP = 4 + BTPROTO_CMTP = 5 + BTPROTO_HIDP = 6 + BTPROTO_AVDTP = 7 +) + +const ( + HCI_CHANNEL_RAW = 0 + HCI_CHANNEL_USER = 1 + HCI_CHANNEL_MONITOR = 2 + HCI_CHANNEL_CONTROL = 3 +) + +// Socketoption Level +const ( + SOL_BLUETOOTH = 0x112 + SOL_HCI = 0x0 + SOL_L2CAP = 0x6 + SOL_RFCOMM = 0x12 + SOL_SCO = 0x11 +) diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go new file mode 100644 index 000000000..df5204877 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -0,0 +1,195 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd + +package unix + +import ( + "errors" + "fmt" +) + +// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c + +const ( + // This is the version of CapRights this package understands. See C implementation for parallels. + capRightsGoVersion = CAP_RIGHTS_VERSION_00 + capArSizeMin = CAP_RIGHTS_VERSION_00 + 2 + capArSizeMax = capRightsGoVersion + 2 +) + +var ( + bit2idx = []int{ + -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + } +) + +func capidxbit(right uint64) int { + return int((right >> 57) & 0x1f) +} + +func rightToIndex(right uint64) (int, error) { + idx := capidxbit(right) + if idx < 0 || idx >= len(bit2idx) { + return -2, fmt.Errorf("index for right 0x%x out of range", right) + } + return bit2idx[idx], nil +} + +func caprver(right uint64) int { + return int(right >> 62) +} + +func capver(rights *CapRights) int { + return caprver(rights.Rights[0]) +} + +func caparsize(rights *CapRights) int { + return capver(rights) + 2 +} + +// CapRightsSet sets the permissions in setrights in rights. +func CapRightsSet(rights *CapRights, setrights []uint64) error { + // This is essentially a copy of cap_rights_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errors.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch") + } + rights.Rights[i] |= right + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsClear clears the permissions in clearrights from rights. +func CapRightsClear(rights *CapRights, clearrights []uint64) error { + // This is essentially a copy of cap_rights_vclear() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errors.New("bad rights size") + } + + for _, right := range clearrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch") + } + rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF) + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsIsSet checks whether all the permissions in setrights are present in rights. +func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) { + // This is essentially a copy of cap_rights_is_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return false, fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return false, errors.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return false, errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return false, err + } + if i >= n { + return false, errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return false, errors.New("index mismatch") + } + if (rights.Rights[i] & right) != right { + return false, nil + } + } + + return true, nil +} + +func capright(idx uint64, bit uint64) uint64 { + return ((1 << (57 + idx)) | bit) +} + +// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights. +// See man cap_rights_init(3) and rights(4). +func CapRightsInit(rights []uint64) (*CapRights, error) { + var r CapRights + r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0) + r.Rights[1] = capright(1, 0) + + err := CapRightsSet(&r, rights) + if err != nil { + return nil, err + } + return &r, nil +} + +// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights. +// The capability rights on fd can never be increased by CapRightsLimit. +// See man cap_rights_limit(2) and rights(4). +func CapRightsLimit(fd uintptr, rights *CapRights) error { + return capRightsLimit(int(fd), rights) +} + +// CapRightsGet returns a CapRights structure containing the operations permitted on fd. +// See man cap_rights_get(3) and rights(4). +func CapRightsGet(fd uintptr) (*CapRights, error) { + r, err := CapRightsInit(nil) + if err != nil { + return nil, err + } + err = capRightsGet(capRightsGoVersion, int(fd), r) + if err != nil { + return nil, err + } + return r, nil +} diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go new file mode 100644 index 000000000..3a6ac648d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/constants.go @@ -0,0 +1,13 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +const ( + R_OK = 0x4 + W_OK = 0x2 + X_OK = 0x1 +) diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go new file mode 100644 index 000000000..5e5fb4510 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -0,0 +1,27 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +// Functions to access/create device major and minor numbers matching the +// encoding used by AIX. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0xffff) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return uint64(((major) << 16) | (minor)) +} diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go new file mode 100644 index 000000000..8b401244c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +// Functions to access/create device major and minor numbers matching the +// encoding used AIX. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x3fffffff00000000) >> 32) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32((dev & 0x00000000ffffffff) >> 0) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + var DEVNO64 uint64 + DEVNO64 = 0x8000000000000000 + return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64) +} diff --git a/vendor/golang.org/x/sys/unix/dev_darwin.go b/vendor/golang.org/x/sys/unix/dev_darwin.go new file mode 100644 index 000000000..8d1dc0fa3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Darwin's sys/types.h header. + +package unix + +// Major returns the major component of a Darwin device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 24) & 0xff) +} + +// Minor returns the minor component of a Darwin device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffffff) +} + +// Mkdev returns a Darwin device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 24) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/vendor/golang.org/x/sys/unix/dev_dragonfly.go new file mode 100644 index 000000000..8502f202c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_dragonfly.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Dragonfly's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a DragonFlyBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a DragonFlyBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a DragonFlyBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_freebsd.go b/vendor/golang.org/x/sys/unix/dev_freebsd.go new file mode 100644 index 000000000..eba3b4bd3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_freebsd.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in FreeBSD's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a FreeBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a FreeBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a FreeBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go new file mode 100644 index 000000000..d165d6f30 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_linux.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + major := uint32((dev & 0x00000000000fff00) >> 8) + major |= uint32((dev & 0xfffff00000000000) >> 32) + return major +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x00000000000000ff) >> 0) + minor |= uint32((dev & 0x00000ffffff00000) >> 12) + return minor +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) & 0x00000fff) << 8 + dev |= (uint64(major) & 0xfffff000) << 32 + dev |= (uint64(minor) & 0x000000ff) << 0 + dev |= (uint64(minor) & 0xffffff00) << 12 + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd.go b/vendor/golang.org/x/sys/unix/dev_netbsd.go new file mode 100644 index 000000000..b4a203d0c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_netbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in NetBSD's sys/types.h header. + +package unix + +// Major returns the major component of a NetBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x000fff00) >> 8) +} + +// Minor returns the minor component of a NetBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xfff00000) >> 12) + return minor +} + +// Mkdev returns a NetBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x000fff00 + dev |= (uint64(minor) << 12) & 0xfff00000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd.go b/vendor/golang.org/x/sys/unix/dev_openbsd.go new file mode 100644 index 000000000..f3430c42f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_openbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in OpenBSD's sys/types.h header. + +package unix + +// Major returns the major component of an OpenBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x0000ff00) >> 8) +} + +// Minor returns the minor component of an OpenBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xffff0000) >> 8) + return minor +} + +// Mkdev returns an OpenBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x0000ff00 + dev |= (uint64(minor) << 8) & 0xffff0000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go new file mode 100644 index 000000000..4407c505a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -0,0 +1,17 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris + +package unix + +import "syscall" + +// ParseDirent parses up to max directory entries in buf, +// appending the names to names. It returns the number of +// bytes consumed from buf, the number of entries added +// to names, and the new names slice. +func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { + return syscall.ParseDirent(buf, max, names) +} diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go new file mode 100644 index 000000000..5e9269063 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/endian_big.go @@ -0,0 +1,9 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +// +build ppc64 s390x mips mips64 + +package unix + +const isBigEndian = true diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go new file mode 100644 index 000000000..085df2d8d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -0,0 +1,9 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le + +package unix + +const isBigEndian = false diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go new file mode 100644 index 000000000..84178b0a1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -0,0 +1,31 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Unix environment variables. + +package unix + +import "syscall" + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go new file mode 100644 index 000000000..c56bc8b05 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go @@ -0,0 +1,227 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep +// them here for backwards compatibility. + +package unix + +const ( + IFF_SMART = 0x20 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_IPXIP = 0xf9 + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8030720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8030720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go new file mode 100644 index 000000000..3e9771175 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go @@ -0,0 +1,227 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep +// them here for backwards compatibility. + +package unix + +const ( + IFF_SMART = 0x20 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_IPXIP = 0xf9 + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8040720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8040720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go new file mode 100644 index 000000000..856dca325 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go @@ -0,0 +1,226 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +const ( + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + + // missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go + IFF_SMART = 0x20 + IFT_FAITH = 0xf2 + IFT_IPXIP = 0xf9 + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8030720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8030720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go new file mode 100644 index 000000000..39c03f1ef --- /dev/null +++ b/vendor/golang.org/x/sys/unix/fcntl.go @@ -0,0 +1,32 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build dragonfly freebsd linux netbsd openbsd + +package unix + +import "unsafe" + +// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux +// systems by flock_linux_32bit.go to be SYS_FCNTL64. +var fcntl64Syscall uintptr = SYS_FCNTL + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + valptr, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg)) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk))) + if errno == 0 { + return nil + } + return errno +} diff --git a/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/vendor/golang.org/x/sys/unix/fcntl_darwin.go new file mode 100644 index 000000000..5868a4a47 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/fcntl_darwin.go @@ -0,0 +1,18 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "unsafe" + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) + return err +} diff --git a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go new file mode 100644 index 000000000..fc0e50e03 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -0,0 +1,13 @@ +// +build linux,386 linux,arm linux,mips linux,mipsle + +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +func init() { + // On 32-bit Linux systems, the fcntl syscall that matches Go's + // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. + fcntl64Syscall = SYS_FCNTL64 +} diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go new file mode 100644 index 000000000..cd6f5a613 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -0,0 +1,62 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build gccgo +// +build !aix + +package unix + +import "syscall" + +// We can't use the gc-syntax .s files for gccgo. On the plus side +// much of the functionality can be written directly in Go. + +//extern gccgoRealSyscallNoError +func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr) + +//extern gccgoRealSyscall +func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr) + +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { + syscall.Entersyscall() + r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + syscall.Exitsyscall() + return r, 0 +} + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { + r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + return r, 0 +} + +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + return r, 0, syscall.Errno(errno) +} + +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) + return r, 0, syscall.Errno(errno) +} diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c new file mode 100644 index 000000000..c44730c5e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -0,0 +1,39 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build gccgo +// +build !aix + +#include +#include +#include + +#define _STRINGIFY2_(x) #x +#define _STRINGIFY_(x) _STRINGIFY2_(x) +#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__) + +// Call syscall from C code because the gccgo support for calling from +// Go to C does not support varargs functions. + +struct ret { + uintptr_t r; + uintptr_t err; +}; + +struct ret +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) +{ + struct ret r; + + errno = 0; + r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); + r.err = errno; + return r; +} + +uintptr_t +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) +{ + return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); +} diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go new file mode 100644 index 000000000..251a977a8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -0,0 +1,20 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build gccgo,linux,amd64 + +package unix + +import "syscall" + +//extern gettimeofday +func realGettimeofday(*Timeval, *byte) int32 + +func gettimeofday(tv *Timeval) (err syscall.Errno) { + r := realGettimeofday(tv, nil) + if r < 0 { + return syscall.GetErrno() + } + return 0 +} diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go new file mode 100644 index 000000000..f121a8d64 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import "runtime" + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + err := ioctlSetWinsize(fd, req, value) + runtime.KeepAlive(value) + return err +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req uint, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + err := ioctlSetTermios(fd, req, value) + runtime.KeepAlive(value) + return err +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh new file mode 100644 index 000000000..80d00707b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -0,0 +1,227 @@ +#!/usr/bin/env bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# This script runs or (given -n) prints suggested commands to generate files for +# the Architecture/OS specified by the GOARCH and GOOS environment variables. +# See README.md for more information about how the build system works. + +GOOSARCH="${GOOS}_${GOARCH}" + +# defaults +mksyscall="go run mksyscall.go" +mkerrors="./mkerrors.sh" +zerrors="zerrors_$GOOSARCH.go" +mksysctl="" +zsysctl="zsysctl_$GOOSARCH.go" +mksysnum= +mktypes= +mkasm= +run="sh" +cmd="" + +case "$1" in +-syscalls) + for i in zsyscall*go + do + # Run the command line that appears in the first line + # of the generated file to regenerate it. + sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i + rm _$i + done + exit 0 + ;; +-n) + run="cat" + cmd="echo" + shift +esac + +case "$#" in +0) + ;; +*) + echo 'usage: mkall.sh [-n]' 1>&2 + exit 2 +esac + +if [[ "$GOOS" = "linux" ]]; then + # Use the Docker-based build system + # Files generated through docker (use $cmd so you can Ctl-C the build or run) + $cmd docker build --tag generate:$GOOS $GOOS + $cmd docker run --interactive --tty --volume $(dirname "$(readlink -f "$0")"):/build generate:$GOOS + exit +fi + +GOOSARCH_in=syscall_$GOOSARCH.go +case "$GOOSARCH" in +_* | *_ | _) + echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 + exit 1 + ;; +aix_ppc) + mkerrors="$mkerrors -maix32" + mksyscall="go run mksyscall_aix_ppc.go -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +aix_ppc64) + mkerrors="$mkerrors -maix64" + mksyscall="go run mksyscall_aix_ppc64.go -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +darwin_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32" + mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm_darwin.go" + ;; +darwin_amd64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm_darwin.go" + ;; +darwin_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32" + mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm_darwin.go" + ;; +darwin_arm64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm_darwin.go" + ;; +dragonfly_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -dragonfly" + mksysnum="go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_amd64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -arm" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_arm64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32 -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -netbsd -arm" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +netbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32 -openbsd" + mksysctl="go run mksysctl_openbsd.go" + mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd" + mksysctl="go run mksysctl_openbsd.go" + mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -openbsd -arm" + mksysctl="go run mksysctl_openbsd.go" + mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd" + mksysctl="go run mksysctl_openbsd.go" + mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +solaris_amd64) + mksyscall="go run mksyscall_solaris.go" + mkerrors="$mkerrors -m64" + mksysnum= + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +*) + echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 + exit 1 + ;; +esac + +( + if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi + case "$GOOS" in + *) + syscall_goos="syscall_$GOOS.go" + case "$GOOS" in + darwin | dragonfly | freebsd | netbsd | openbsd) + syscall_goos="syscall_bsd.go $syscall_goos" + ;; + esac + if [ -n "$mksyscall" ]; then + if [ "$GOOSARCH" == "aix_ppc64" ]; then + # aix/ppc64 script generates files instead of writing to stdin. + echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; + elif [ "$GOOS" == "darwin" ]; then + # pre-1.12, direct syscalls + echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; + # 1.12 and later, syscalls via libSystem + echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; + else + echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; + fi + fi + esac + if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi + if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi + if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi + if [ -n "$mkasm" ]; then echo "$mkasm $GOARCH"; fi +) | $run diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh new file mode 100644 index 000000000..b3c33c2c3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -0,0 +1,661 @@ +#!/usr/bin/env bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# Generate Go code listing errors and other #defined constant +# values (ENAMETOOLONG etc.), by asking the preprocessor +# about the definitions. + +unset LANG +export LC_ALL=C +export LC_CTYPE=C + +if test -z "$GOARCH" -o -z "$GOOS"; then + echo 1>&2 "GOARCH or GOOS not defined in environment" + exit 1 +fi + +# Check that we are using the new build system if we should +if [[ "$GOOS" = "linux" ]] && [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then + echo 1>&2 "In the Docker based build system, mkerrors should not be called directly." + echo 1>&2 "See README.md" + exit 1 +fi + +if [[ "$GOOS" = "aix" ]]; then + CC=${CC:-gcc} +else + CC=${CC:-cc} +fi + +if [[ "$GOOS" = "solaris" ]]; then + # Assumes GNU versions of utilities in PATH. + export PATH=/usr/gnu/bin:$PATH +fi + +uname=$(uname) + +includes_AIX=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AF_LOCAL AF_UNIX +' + +includes_Darwin=' +#define _DARWIN_C_SOURCE +#define KERNEL +#define _DARWIN_USE_64_BIT_INODE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' + +includes_DragonFly=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' + +includes_FreeBSD=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __FreeBSD__ >= 10 +#define IFT_CARP 0xf8 // IFT_CARP is deprecated in FreeBSD 10 +#undef SIOCAIFADDR +#define SIOCAIFADDR _IOW(105, 26, struct oifaliasreq) // ifaliasreq contains if_data +#undef SIOCSIFPHYADDR +#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq) // ifaliasreq contains if_data +#endif +' + +includes_Linux=' +#define _LARGEFILE_SOURCE +#define _LARGEFILE64_SOURCE +#ifndef __LP64__ +#define _FILE_OFFSET_BITS 64 +#endif +#define _GNU_SOURCE + +// is broken on powerpc64, as it fails to include definitions of +// these structures. We just include them copied from . +#if defined(__powerpc__) +struct sgttyb { + char sg_ispeed; + char sg_ospeed; + char sg_erase; + char sg_kill; + short sg_flags; +}; + +struct tchars { + char t_intrc; + char t_quitc; + char t_startc; + char t_stopc; + char t_eofc; + char t_brkc; +}; + +struct ltchars { + char t_suspc; + char t_dsuspc; + char t_rprntc; + char t_flushc; + char t_werasc; + char t_lnextc; +}; +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__sparc__) +// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the +// definition in glibc. As only the error constants are needed here, include the +// generic termibits.h (which is included by termbits.h on sparc). +#include +#else +#include +#endif + +#ifndef MSG_FASTOPEN +#define MSG_FASTOPEN 0x20000000 +#endif + +#ifndef PTRACE_GETREGS +#define PTRACE_GETREGS 0xc +#endif + +#ifndef PTRACE_SETREGS +#define PTRACE_SETREGS 0xd +#endif + +#ifndef SOL_NETLINK +#define SOL_NETLINK 270 +#endif + +#ifdef SOL_BLUETOOTH +// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h +// but it is already in bluetooth_linux.go +#undef SOL_BLUETOOTH +#endif + +// Certain constants are missing from the fs/crypto UAPI +#define FS_KEY_DESC_PREFIX "fscrypt:" +#define FS_KEY_DESC_PREFIX_SIZE 8 +#define FS_MAX_KEY_SIZE 64 +' + +includes_NetBSD=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Needed since refers to it... +#define schedppq 1 +' + +includes_OpenBSD=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// We keep some constants not supported in OpenBSD 5.5 and beyond for +// the promise of compatibility. +#define EMUL_ENABLED 0x1 +#define EMUL_NATIVE 0x2 +#define IPV6_FAITH 0x1d +#define IPV6_OPTIONS 0x1 +#define IPV6_RTHDR_STRICT 0x1 +#define IPV6_SOCKOPT_RESERVED1 0x3 +#define SIOCGIFGENERIC 0xc020693a +#define SIOCSIFGENERIC 0x80206939 +#define WALTSIG 0x4 +' + +includes_SunOS=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' + + +includes=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' +ccflags="$@" + +# Write go tool cgo -godefs input. +( + echo package unix + echo + echo '/*' + indirect="includes_$(uname)" + echo "${!indirect} $includes" + echo '*/' + echo 'import "C"' + echo 'import "syscall"' + echo + echo 'const (' + + # The gcc command line prints all the #defines + # it encounters while processing the input + echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags | + awk ' + $1 != "#define" || $2 ~ /\(/ || $3 == "" {next} + + $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next} # 386 registers + $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next} + $2 ~ /^(SCM_SRCRT)$/ {next} + $2 ~ /^(MAP_FAILED)$/ {next} + $2 ~ /^ELF_.*$/ {next}# contains ELF_ARCH, etc. + + $2 ~ /^EXTATTR_NAMESPACE_NAMES/ || + $2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next} + + $2 !~ /^ECCAPBITS/ && + $2 !~ /^ETH_/ && + $2 !~ /^EPROC_/ && + $2 !~ /^EQUIV_/ && + $2 !~ /^EXPR_/ && + $2 ~ /^E[A-Z0-9_]+$/ || + $2 ~ /^B[0-9_]+$/ || + $2 ~ /^(OLD|NEW)DEV$/ || + $2 == "BOTHER" || + $2 ~ /^CI?BAUD(EX)?$/ || + $2 == "IBSHIFT" || + $2 ~ /^V[A-Z0-9]+$/ || + $2 ~ /^CS[A-Z0-9]/ || + $2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ || + $2 ~ /^IGN/ || + $2 ~ /^IX(ON|ANY|OFF)$/ || + $2 ~ /^IN(LCR|PCK)$/ || + $2 !~ "X86_CR3_PCID_NOFLUSH" && + $2 ~ /(^FLU?SH)|(FLU?SH$)/ || + $2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ || + $2 == "BRKINT" || + $2 == "HUPCL" || + $2 == "PENDIN" || + $2 == "TOSTOP" || + $2 == "XCASE" || + $2 == "ALTWERASE" || + $2 == "NOKERNINFO" || + $2 ~ /^PAR/ || + $2 ~ /^SIG[^_]/ || + $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ || + $2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ || + $2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ || + $2 ~ /^O?XTABS$/ || + $2 ~ /^TC[IO](ON|OFF)$/ || + $2 ~ /^IN_/ || + $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^TP_STATUS_/ || + $2 ~ /^FALLOC_/ || + $2 == "ICMPV6_FILTER" || + $2 == "SOMAXCONN" || + $2 == "NAME_MAX" || + $2 == "IFNAMSIZ" || + $2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ || + $2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ || + $2 ~ /^HW_MACHINE$/ || + $2 ~ /^SYSCTL_VERS/ || + $2 !~ "MNT_BITS" && + $2 ~ /^(MS|MNT|UMOUNT)_/ || + $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || + $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT)_/ || + $2 ~ /^KEXEC_/ || + $2 ~ /^LINUX_REBOOT_CMD_/ || + $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || + $2 ~ /^MODULE_INIT_/ || + $2 !~ "NLA_TYPE_MASK" && + $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || + $2 ~ /^SIOC/ || + $2 ~ /^TIOC/ || + $2 ~ /^TCGET/ || + $2 ~ /^TCSET/ || + $2 ~ /^TC(FLSH|SBRKP?|XONC)$/ || + $2 !~ "RTF_BITS" && + $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ || + $2 ~ /^BIOC/ || + $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ || + $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || + $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || + $2 ~ /^CLONE_[A-Z_]+/ || + $2 !~ /^(BPF_TIMEVAL)$/ && + $2 ~ /^(BPF|DLT)_/ || + $2 ~ /^(CLOCK|TIMER)_/ || + $2 ~ /^CAN_/ || + $2 ~ /^CAP_/ || + $2 ~ /^ALG_/ || + $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ || + $2 ~ /^GRND_/ || + $2 ~ /^RND/ || + $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || + $2 ~ /^KEYCTL_/ || + $2 ~ /^PERF_EVENT_IOC_/ || + $2 ~ /^SECCOMP_MODE_/ || + $2 ~ /^SPLICE_/ || + $2 ~ /^SYNC_FILE_RANGE_/ || + $2 !~ /^AUDIT_RECORD_MAGIC/ && + $2 !~ /IOC_MAGIC/ && + $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || + $2 ~ /^(VM|VMADDR)_/ || + $2 ~ /^IOCTL_VM_SOCKETS_/ || + $2 ~ /^(TASKSTATS|TS)_/ || + $2 ~ /^CGROUPSTATS_/ || + $2 ~ /^GENL_/ || + $2 ~ /^STATX_/ || + $2 ~ /^RENAME/ || + $2 ~ /^UBI_IOC[A-Z]/ || + $2 ~ /^UTIME_/ || + $2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ || + $2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || + $2 ~ /^FSOPT_/ || + $2 ~ /^WDIOC_/ || + $2 ~ /^NFN/ || + $2 ~ /^XDP_/ || + $2 ~ /^(HDIO|WIN|SMART)_/ || + $2 ~ /^CRYPTO_/ || + $2 !~ "WMESGLEN" && + $2 ~ /^W[A-Z0-9]+$/ || + $2 ~/^PPPIOC/ || + $2 ~ /^FAN_|FANOTIFY_/ || + $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} + $2 ~ /^__WCOREFLAG$/ {next} + $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} + + {next} + ' | sort + + echo ')' +) >_const.go + +# Pull out the error names for later. +errors=$( + echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' | + sort +) + +# Pull out the signal names for later. +signals=$( + echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | + egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | + sort +) + +# Again, writing regexps to a file. +echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' | + sort >_error.grep +echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | + egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | + sort >_signal.grep + +echo '// mkerrors.sh' "$@" +echo '// Code generated by the command above; see README.md. DO NOT EDIT.' +echo +echo "// +build ${GOARCH},${GOOS}" +echo +go tool cgo -godefs -- "$@" _const.go >_error.out +cat _error.out | grep -vf _error.grep | grep -vf _signal.grep +echo +echo '// Errors' +echo 'const (' +cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/' +echo ')' + +echo +echo '// Signals' +echo 'const (' +cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/' +echo ')' + +# Run C program to print error and syscall strings. +( + echo -E " +#include +#include +#include +#include +#include +#include + +#define nelem(x) (sizeof(x)/sizeof((x)[0])) + +enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below + +struct tuple { + int num; + const char *name; +}; + +struct tuple errors[] = { +" + for i in $errors + do + echo -E ' {'$i', "'$i'" },' + done + + echo -E " +}; + +struct tuple signals[] = { +" + for i in $signals + do + echo -E ' {'$i', "'$i'" },' + done + + # Use -E because on some systems bash builtin interprets \n itself. + echo -E ' +}; + +static int +tuplecmp(const void *a, const void *b) +{ + return ((struct tuple *)a)->num - ((struct tuple *)b)->num; +} + +int +main(void) +{ + int i, e; + char buf[1024], *p; + + printf("\n\n// Error table\n"); + printf("var errorList = [...]struct {\n"); + printf("\tnum syscall.Errno\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(errors, nelem(errors), sizeof errors[0], tuplecmp); + for(i=0; i 0 && errors[i-1].num == e) + continue; + strcpy(buf, strerror(e)); + // lowercase first letter: Bad -> bad, but STREAM -> STREAM. + if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) + buf[0] += a - A; + printf("\t{ %d, \"%s\", \"%s\" },\n", e, errors[i].name, buf); + } + printf("}\n\n"); + + printf("\n\n// Signal table\n"); + printf("var signalList = [...]struct {\n"); + printf("\tnum syscall.Signal\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(signals, nelem(signals), sizeof signals[0], tuplecmp); + for(i=0; i 0 && signals[i-1].num == e) + continue; + strcpy(buf, strsignal(e)); + // lowercase first letter: Bad -> bad, but STREAM -> STREAM. + if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) + buf[0] += a - A; + // cut trailing : number. + p = strrchr(buf, ":"[0]); + if(p) + *p = '\0'; + printf("\t{ %d, \"%s\", \"%s\" },\n", e, signals[i].name, buf); + } + printf("}\n\n"); + + return 0; +} + +' +) >_errors.c + +$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go new file mode 100644 index 000000000..bc2f3629a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// For Unix, get the pagesize from the runtime. + +package unix + +import "syscall" + +func Getpagesize() int { + return syscall.Getpagesize() +} diff --git a/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/vendor/golang.org/x/sys/unix/pledge_openbsd.go new file mode 100644 index 000000000..eb48294b2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/pledge_openbsd.go @@ -0,0 +1,163 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "errors" + "fmt" + "strconv" + "syscall" + "unsafe" +) + +// Pledge implements the pledge syscall. +// +// The pledge syscall does not accept execpromises on OpenBSD releases +// before 6.3. +// +// execpromises must be empty when Pledge is called on OpenBSD +// releases predating 6.3, otherwise an error will be returned. +// +// For more information see pledge(2). +func Pledge(promises, execpromises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, execpromises) + if err != nil { + return err + } + + pptr, err := syscall.BytePtrFromString(promises) + if err != nil { + return err + } + + // This variable will hold either a nil unsafe.Pointer or + // an unsafe.Pointer to a string (execpromises). + var expr unsafe.Pointer + + // If we're running on OpenBSD > 6.2, pass execpromises to the syscall. + if maj > 6 || (maj == 6 && min > 2) { + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { + return err + } + expr = unsafe.Pointer(exptr) + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) + if e != 0 { + return e + } + + return nil +} + +// PledgePromises implements the pledge syscall. +// +// This changes the promises and leaves the execpromises untouched. +// +// For more information see pledge(2). +func PledgePromises(promises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, "") + if err != nil { + return err + } + + // This variable holds the execpromises and is always nil. + var expr unsafe.Pointer + + pptr, err := syscall.BytePtrFromString(promises) + if err != nil { + return err + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) + if e != 0 { + return e + } + + return nil +} + +// PledgeExecpromises implements the pledge syscall. +// +// This changes the execpromises and leaves the promises untouched. +// +// For more information see pledge(2). +func PledgeExecpromises(execpromises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, execpromises) + if err != nil { + return err + } + + // This variable holds the promises and is always nil. + var pptr unsafe.Pointer + + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { + return err + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0) + if e != 0 { + return e + } + + return nil +} + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} + +// pledgeAvailable checks for availability of the pledge(2) syscall +// based on the running OpenBSD version. +func pledgeAvailable(maj, min int, execpromises string) error { + // If OpenBSD <= 5.9, pledge is not available. + if (maj == 5 && min != 9) || maj < 5 { + return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min) + } + + // If OpenBSD <= 6.2 and execpromises is not empty, + // return an error - execpromises is not available before 6.3 + if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" { + return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go new file mode 100644 index 000000000..61712b51c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,race linux,race freebsd,race + +package unix + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go new file mode 100644 index 000000000..ad026678c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly + +package unix + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go new file mode 100644 index 000000000..6079eb4ac --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -0,0 +1,36 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *((*Ucred)(cmsgData(h))) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go new file mode 100644 index 000000000..062bcabab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -0,0 +1,120 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Socket control messages + +package unix + +import ( + "runtime" + "unsafe" +) + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + + switch runtime.GOOS { + case "aix": + // There is no alignment on AIX. + salign = 1 + case "darwin", "dragonfly", "solaris", "illumos": + // NOTE: It seems like 64-bit Darwin, DragonFly BSD, + // illumos, and Solaris kernels still require 32-bit + // aligned access to network subsystem. + if SizeofPtr == 8 { + salign = 4 + } + case "netbsd", "openbsd": + // NetBSD and OpenBSD armv7 require 64-bit alignment. + if runtime.GOARCH == "arm" { + salign = 8 + } + } + + return (salen + salign - 1) & ^(salign - 1) +} + +// CmsgLen returns the value to store in the Len field of the Cmsghdr +// structure, taking into account any necessary alignment. +func CmsgLen(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + datalen +} + +// CmsgSpace returns the number of bytes an ancillary element with +// payload of the passed data length occupies. +func CmsgSpace(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen) +} + +func cmsgData(h *Cmsghdr) unsafe.Pointer { + return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr))) +} + +// SocketControlMessage represents a socket control message. +type SocketControlMessage struct { + Header Cmsghdr + Data []byte +} + +// ParseSocketControlMessage parses b as an array of socket control +// messages. +func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) { + var msgs []SocketControlMessage + i := 0 + for i+CmsgLen(0) <= len(b) { + h, dbuf, err := socketControlMessageHeaderAndData(b[i:]) + if err != nil { + return nil, err + } + m := SocketControlMessage{Header: *h, Data: dbuf} + msgs = append(msgs, m) + i += cmsgAlignOf(int(h.Len)) + } + return msgs, nil +} + +func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) { + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) { + return nil, nil, EINVAL + } + return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil +} + +// UnixRights encodes a set of open file descriptors into a socket +// control message for sending to another process. +func UnixRights(fds ...int) []byte { + datalen := len(fds) * 4 + b := make([]byte, CmsgSpace(datalen)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_RIGHTS + h.SetLen(CmsgLen(datalen)) + data := cmsgData(h) + for _, fd := range fds { + *(*int32)(data) = int32(fd) + data = unsafe.Pointer(uintptr(data) + 4) + } + return b +} + +// ParseUnixRights decodes a socket control message that contains an +// integer array of open file descriptors from another process. +func ParseUnixRights(m *SocketControlMessage) ([]int, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_RIGHTS { + return nil, EINVAL + } + fds := make([]int, len(m.Data)>>2) + for i, j := 0, 0; i < len(m.Data); i += 4 { + fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i]))) + j++ + } + return fds, nil +} diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go new file mode 100644 index 000000000..17fb69868 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/str.go @@ -0,0 +1,26 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + uitoa(uint(-val)) + } + return uitoa(uint(val)) +} + +func uitoa(val uint) string { + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go new file mode 100644 index 000000000..fd4ee8ebe --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -0,0 +1,53 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Package unix contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display OS-specific documentation for the current +// system. If you want godoc to display OS documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package unix // import "golang.org/x/sys/unix" + +import "strings" + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +var _zero uintptr diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 000000000..c1fb7bd16 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,557 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import "unsafe" + +/* + * Wrapped + */ + +//sys utimes(path string, times *[2]Timeval) (err error) +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + // Recvmsg not implemented on AIX + sa := new(SockaddrUnix) + return -1, -1, -1, sa, ENOSYS +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + // SendmsgN not implemented on AIX + return -1, ENOSYS +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys getdirent(fd int, buf []byte) (n int, err error) +func ReadDirent(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the processus is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x200 != 0 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Fsync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdir(dirfd int, path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys readlen(fd int, p *byte, np int) (n int, err error) = read +//sys writelen(fd int, p *byte, np int) (n int, err error) = write + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) + +// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used. +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg + +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) + +//sys Getsystemcfg(label int) (n uint64) + +//sys umount(target string) (err error) +func Unmount(target string, flags int) (err error) { + if flags != 0 { + // AIX doesn't have any flags for umount. + return ENOSYS + } + return umount(target) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 000000000..c28af1f86 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 000000000..881cacc6c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go new file mode 100644 index 000000000..33c8b5f0d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -0,0 +1,624 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd netbsd openbsd + +// BSD system call wrappers shared by *BSD based systems +// including OS X (Darwin) and FreeBSD. Like the other +// syscall_*.go files it is compiled as Go code but also +// used as input to mksyscall which parses the //sys +// lines and generates system call stubs. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // 64 bits should be enough. (32 bits isn't even on 386). Since the + // actual system call is getdirentries64, 64 is a good guess. + // TODO(rsc): Can we use a single global basep for all calls? + var base = (*uintptr)(unsafe.Pointer(new(uint64))) + return Getdirentries(fd, buf, base) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys Shutdown(s int, how int) (err error) + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Index == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = sa.Len + sa.raw.Family = AF_LINK + sa.raw.Index = sa.Index + sa.raw.Type = sa.Type + sa.raw.Nlen = sa.Nlen + sa.raw.Alen = sa.Alen + sa.raw.Slen = sa.Slen + for i := 0; i < len(sa.raw.Data); i++ { + sa.raw.Data[i] = sa.Data[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_LINK: + pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa)) + sa := new(SockaddrDatalink) + sa.Len = pp.Len + sa.Family = pp.Family + sa.Index = pp.Index + sa.Type = pp.Type + sa.Nlen = pp.Nlen + sa.Alen = pp.Alen + sa.Slen = pp.Slen + for i := 0; i < len(sa.Data); i++ { + sa.Data[i] = pp.Data[i] + } + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + if pp.Len < 2 || pp.Len > SizeofSockaddrUnix { + return nil, EINVAL + } + sa := new(SockaddrUnix) + + // Some BSDs include the trailing NUL in the length, whereas + // others do not. Work around this by subtracting the leading + // family and len. The path is then scanned to see if a NUL + // terminator still exists within the length. + n := int(pp.Len) - 2 // subtract leading Family, Len + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + // found early NUL; assume Len included the NUL + // or was overestimating. + n = i + break + } + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + if runtime.GOOS == "darwin" && len == 0 { + // Accepted socket has no address. + // This is likely due to a bug in xnu kernels, + // where instead of ECONNABORTED error socket + // is accepted, but has no address. + Close(nfd) + return 0, nil, ECONNABORTED + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be + // reported upstream. + if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 { + rsa.Addr.Family = AF_UNIX + rsa.Addr.Len = SizeofSockaddrUnix + } + return anyToSockaddr(fd, &rsa) +} + +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return string(buf[:vallen-1]), nil +} + +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +//sys kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) + +func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) { + var change, event unsafe.Pointer + if len(changes) > 0 { + change = unsafe.Pointer(&changes[0]) + } + if len(events) > 0 { + event = unsafe.Pointer(&events[0]) + } + return kevent(kq, change, len(changes), event, len(events), timeout) +} + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +// sysctlmib translates name to mib number and appends any additional args. +func sysctlmib(name string, args ...int) ([]_C_int, error) { + // Translate name to mib number. + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + for _, a := range args { + mib = append(mib, _C_int(a)) + } + + return mib, nil +} + +func Sysctl(name string) (string, error) { + return SysctlArgs(name) +} + +func SysctlArgs(name string, args ...int) (string, error) { + buf, err := SysctlRaw(name, args...) + if err != nil { + return "", err + } + n := len(buf) + + // Throw away terminating NUL. + if n > 0 && buf[n-1] == '\x00' { + n-- + } + return string(buf[0:n]), nil +} + +func SysctlUint32(name string) (uint32, error) { + return SysctlUint32Args(name) +} + +func SysctlUint32Args(name string, args ...int) (uint32, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(4) + buf := make([]byte, 4) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 4 { + return 0, EIO + } + return *(*uint32)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlUint64(name string, args ...int) (uint64, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(8) + buf := make([]byte, 8) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 8 { + return 0, EIO + } + return *(*uint64)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlRaw(name string, args ...int) ([]byte, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Read into buffer of that size. + buf := make([]byte, n) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return nil, err + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n], nil +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + // Darwin setattrlist can set nanosecond timestamps + err := setattrlistTimes(path, ts, 0) + if err != ENOSYS { + return err + } + err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + err := setattrlistTimes(path, ts, flags) + if err != ENOSYS { + return err + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys futimes(fd int, timeval *[2]Timeval) (err error) + +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimes(fd, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +// TODO: wrap +// Acct(name nil-string) (err error) +// Gethostuuid(uuid *byte, timeout *Timespec) (err error) +// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, behav int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go new file mode 100644 index 000000000..212009189 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -0,0 +1,706 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Darwin system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "errors" + "syscall" + "unsafe" +) + +const ImplementsGetwd = true + +func Getwd() (string, error) { + buf := make([]byte, 2048) + attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0) + if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 { + wd := string(attrs[0]) + // Sanity check that it's an absolute path and ends + // in a null byte, which we then strip. + if wd[0] == '/' && wd[len(wd)-1] == 0 { + return wd[:len(wd)-1], nil + } + } + // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the + // slow algorithm. + return "", ENOTSUP +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } +func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } + +const ( + attrBitMapCount = 5 + attrCmnFullpath = 0x08000000 +) + +type attrList struct { + bitmapCount uint16 + _ uint16 + CommonAttr uint32 + VolAttr uint32 + DirAttr uint32 + FileAttr uint32 + Forkattr uint32 +} + +func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) { + if len(attrBuf) < 4 { + return nil, errors.New("attrBuf too small") + } + attrList.bitmapCount = attrBitMapCount + + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return nil, err + } + + if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil { + return nil, err + } + size := *(*uint32)(unsafe.Pointer(&attrBuf[0])) + + // dat is the section of attrBuf that contains valid data, + // without the 4 byte length header. All attribute offsets + // are relative to dat. + dat := attrBuf + if int(size) < len(attrBuf) { + dat = dat[:size] + } + dat = dat[4:] // remove length prefix + + for i := uint32(0); int(i) < len(dat); { + header := dat[i:] + if len(header) < 8 { + return attrs, errors.New("truncated attribute header") + } + datOff := *(*int32)(unsafe.Pointer(&header[0])) + attrLen := *(*uint32)(unsafe.Pointer(&header[4])) + if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) { + return attrs, errors.New("truncated results; attrBuf too small") + } + end := uint32(datOff) + attrLen + attrs = append(attrs, dat[datOff:end]) + i = end + if r := i % 4; r != 0 { + i += (4 - r) + } + } + return +} + +//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(_p0, bufsize, flags) +} + +func xattrPointer(dest []byte) *byte { + // It's only when dest is set to NULL that the OS X implementations of + // getxattr() and listxattr() return the current sizes of the named attributes. + // An empty byte array is not sufficient. To maintain the same behaviour as the + // linux implementation, we wrap around the system calls and pass in NULL when + // dest is empty. + var destp *byte + if len(dest) > 0 { + destp = &dest[0] + } + return destp +} + +//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) +} + +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + // The parameters for the OS X implementation vary slightly compared to the + // linux system call, specifically the position parameter: + // + // linux: + // int setxattr( + // const char *path, + // const char *name, + // const void *value, + // size_t size, + // int flags + // ); + // + // darwin: + // int setxattr( + // const char *path, + // const char *name, + // void *value, + // size_t size, + // u_int32_t position, + // int options + // ); + // + // position specifies the offset within the extended attribute. In the + // current implementation, only the resource fork extended attribute makes + // use of this argument. For all others, position is reserved. We simply + // default to setting it to zero. + return setxattr(path, attr, xattrPointer(data), len(data), 0, flags) +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) +} + +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) + +func Removexattr(path string, attr string) (err error) { + // We wrap around and explicitly zero out the options provided to the OS X + // implementation of removexattr, we do so for interoperability with the + // linux variant. + return removexattr(path, attr, 0) +} + +func Lremovexattr(link string, attr string) (err error) { + return removexattr(link, attr, XATTR_NOFOLLOW) +} + +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + +//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) + +func Listxattr(path string, dest []byte) (sz int, err error) { + return listxattr(path, xattrPointer(dest), len(dest), 0) +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) +} + +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + _p0, err := BytePtrFromString(path) + if err != nil { + return err + } + + var attrList attrList + attrList.bitmapCount = ATTR_BIT_MAP_COUNT + attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME + + // order is mtime, atime: the opposite of Chtimes + attributes := [2]Timespec{times[1], times[0]} + options := 0 + if flags&AT_SYMLINK_NOFOLLOW != 0 { + options |= FSOPT_NOFOLLOW + } + return setattrlist( + _p0, + unsafe.Pointer(&attrList), + unsafe.Pointer(&attributes), + unsafe.Sizeof(attributes), + options) +} + +//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { + // Darwin doesn't support SYS_UTIMENSAT + return ENOSYS +} + +/* + * Wrapped + */ + +//sys kill(pid int, signum int, posix int) (err error) + +func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var length = int64(count) + err = sendfile(infd, outfd, *offset, &length, nil, 0) + written = int(length) + return +} + +//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exchangedata(path1 string, path2 string, options int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Getuid() (uid int) +//sysnb Issetugid() (tainted bool) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setprivexec(flag int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE + +/* + * Unimplemented + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Ioctl +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// sendfile +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Poll_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go new file mode 100644 index 000000000..489726fa9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -0,0 +1,63 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = int32(sec) + tv.Usec = int32(usec) + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go new file mode 100644 index 000000000..914b89bde --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -0,0 +1,63 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = sec + tv.Usec = usec + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go new file mode 100644 index 000000000..4a284cf50 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -0,0 +1,64 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = int32(sec) + tv.Usec = int32(usec) + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go new file mode 100644 index 000000000..52dcd88f6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -0,0 +1,66 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = sec + tv.Usec = usec + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go new file mode 100644 index 000000000..4b4ae460f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -0,0 +1,31 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.12 + +package unix + +import "unsafe" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall6X syscall.syscall6X +//go:linkname syscall_syscall9 syscall.syscall9 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 + +// Find the entry point for f. See comments in runtime/proc.go for the +// function of the same name. +//go:nosplit +func funcPC(f func()) uintptr { + return **(**uintptr)(unsafe.Pointer(&f)) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go new file mode 100644 index 000000000..962eee304 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -0,0 +1,539 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// DragonFly BSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import "unsafe" + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) +func Pread(fd int, p []byte, offset int64) (n int, err error) { + return extpread(fd, p, 0, offset) +} + +//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + return extpwrite(fd, p, 0, offset) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { + err := sysctl(mib, old, oldlen, nil, 0) + if err != nil { + // Utsname members on Dragonfly are only 32 bytes and + // the syscall returns ENOMEM in case the actual value + // is longer. + if err == ENOMEM { + err = nil + } + } + return err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil { + return err + } + uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil { + return err + } + uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctlUname(mib, &uname.Release[0], &n); err != nil { + return err + } + uname.Release[unsafe.Sizeof(uname.Release)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctlUname(mib, &uname.Version[0], &n); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil { + return err + } + uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0 + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + * TODO(jsing): Update this list for DragonFly. + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Getxattr +// Fgetxattr +// Setxattr +// Fsetxattr +// Removexattr +// Fremovexattr +// Listxattr +// Flistxattr +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go new file mode 100644 index 000000000..9babb31ea --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,dragonfly + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go new file mode 100644 index 000000000..a7ca1ebea --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -0,0 +1,824 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// FreeBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sync" + "unsafe" +) + +const ( + SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); } + SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \ + SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \ + SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \ + SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \ + SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \ + SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \ +) + +// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h +const _ino64First = 1200031 + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var ( + _p0 unsafe.Pointer + bufsize uintptr + oldBuf []statfs_freebsd11_t + needsConvert bool + ) + + if len(buf) > 0 { + if supportsABI(_ino64First) { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } else { + n := len(buf) + oldBuf = make([]statfs_freebsd11_t, n) + _p0 = unsafe.Pointer(&oldBuf[0]) + bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n) + needsConvert = true + } + } + var sysno uintptr = SYS_GETFSSTAT + if supportsABI(_ino64First) { + sysno = SYS_GETFSSTAT_FREEBSD12 + } + r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + if e1 == 0 && needsConvert { + for i := range oldBuf { + buf[i].convertFrom(&oldBuf[i]) + } + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Stat(path string, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(AT_FDCWD, path, st, 0) + } + err = stat(path, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Lstat(path string, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) + } + err = lstat(path, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Fstat(fd int, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstat_freebsd12(fd, st) + } + err = fstat(fd, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(fd, path, st, flags) + } + err = fstatat(fd, path, &oldStat, flags) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Statfs(path string, st *Statfs_t) (err error) { + var oldStatfs statfs_freebsd11_t + if supportsABI(_ino64First) { + return statfs_freebsd12(path, st) + } + err = statfs(path, &oldStatfs) + if err != nil { + return err + } + + st.convertFrom(&oldStatfs) + return nil +} + +func Fstatfs(fd int, st *Statfs_t) (err error) { + var oldStatfs statfs_freebsd11_t + if supportsABI(_ino64First) { + return fstatfs_freebsd12(fd, st) + } + err = fstatfs(fd, &oldStatfs) + if err != nil { + return err + } + + st.convertFrom(&oldStatfs) + return nil +} + +func Getdents(fd int, buf []byte) (n int, err error) { + return Getdirentries(fd, buf, nil) +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + if supportsABI(_ino64First) { + return getdirentries_freebsd12(fd, buf, basep) + } + + // The old syscall entries are smaller than the new. Use 1/4 of the original + // buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c). + oldBufLen := roundup(len(buf)/4, _dirblksiz) + oldBuf := make([]byte, oldBufLen) + n, err = getdirentries(fd, oldBuf, basep) + if err == nil && n > 0 { + n = convertFromDirents11(buf, oldBuf[:n]) + } + return +} + +func Mknod(path string, mode uint32, dev uint64) (err error) { + var oldDev int + if supportsABI(_ino64First) { + return mknodat_freebsd12(AT_FDCWD, path, mode, dev) + } + oldDev = int(dev) + return mknod(path, mode, oldDev) +} + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var oldDev int + if supportsABI(_ino64First) { + return mknodat_freebsd12(fd, path, mode, dev) + } + oldDev = int(dev) + return mknodat(fd, path, mode, oldDev) +} + +// round x to the nearest multiple of y, larger or equal to x. +// +// from /usr/include/sys/param.h Macros for counting and rounding. +// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +func roundup(x, y int) int { + return ((x + y - 1) / y) * y +} + +func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { + *s = Stat_t{ + Dev: uint64(old.Dev), + Ino: uint64(old.Ino), + Nlink: uint64(old.Nlink), + Mode: old.Mode, + Uid: old.Uid, + Gid: old.Gid, + Rdev: uint64(old.Rdev), + Atim: old.Atim, + Mtim: old.Mtim, + Ctim: old.Ctim, + Birthtim: old.Birthtim, + Size: old.Size, + Blocks: old.Blocks, + Blksize: old.Blksize, + Flags: old.Flags, + Gen: uint64(old.Gen), + } +} + +func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) { + *s = Statfs_t{ + Version: _statfsVersion, + Type: old.Type, + Flags: old.Flags, + Bsize: old.Bsize, + Iosize: old.Iosize, + Blocks: old.Blocks, + Bfree: old.Bfree, + Bavail: old.Bavail, + Files: old.Files, + Ffree: old.Ffree, + Syncwrites: old.Syncwrites, + Asyncwrites: old.Asyncwrites, + Syncreads: old.Syncreads, + Asyncreads: old.Asyncreads, + // Spare + Namemax: old.Namemax, + Owner: old.Owner, + Fsid: old.Fsid, + // Charspare + // Fstypename + // Mntfromname + // Mntonname + } + + sl := old.Fstypename[:] + n := clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Fstypename[:], old.Fstypename[:n]) + + sl = old.Mntfromname[:] + n = clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Mntfromname[:], old.Mntfromname[:n]) + + sl = old.Mntonname[:] + n = clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Mntonname[:], old.Mntonname[:n]) +} + +func convertFromDirents11(buf []byte, old []byte) int { + const ( + fixedSize = int(unsafe.Offsetof(Dirent{}.Name)) + oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name)) + ) + + dstPos := 0 + srcPos := 0 + for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) { + dstDirent := (*Dirent)(unsafe.Pointer(&buf[dstPos])) + srcDirent := (*dirent_freebsd11)(unsafe.Pointer(&old[srcPos])) + + reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8) + if dstPos+reclen > len(buf) { + break + } + + dstDirent.Fileno = uint64(srcDirent.Fileno) + dstDirent.Off = 0 + dstDirent.Reclen = uint16(reclen) + dstDirent.Type = srcDirent.Type + dstDirent.Pad0 = 0 + dstDirent.Namlen = uint16(srcDirent.Namlen) + dstDirent.Pad1 = 0 + + copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen]) + padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen] + for i := range padding { + padding[i] = 0 + } + + dstPos += int(dstDirent.Reclen) + srcPos += int(srcDirent.Reclen) + } + + return dstPos +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys CapEnter() (err error) +//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET +//sys capRightsLimit(fd int, rightsp *CapRights) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys fstat(fd int, stat *stat_freebsd11_t) (err error) +//sys fstat_freebsd12(fd int, stat *Stat_t) (err error) +//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) +//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) +//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error) +//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys lstat(path string, stat *stat_freebsd11_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys mknod(path string, mode uint32, dev int) (err error) +//sys mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys stat(path string, stat *stat_freebsd11_t) (err error) +//sys statfs(path string, stat *statfs_freebsd11_t) (err error) +//sys statfs_freebsd12(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Ioctl +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdents +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Poll_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go new file mode 100644 index 000000000..21e03958c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go new file mode 100644 index 000000000..9c945a657 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go new file mode 100644 index 000000000..5cd6243f2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -0,0 +1,52 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go new file mode 100644 index 000000000..a31805487 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -0,0 +1,52 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go new file mode 100644 index 000000000..c302f01b2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -0,0 +1,1847 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Linux system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "encoding/binary" + "net" + "runtime" + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +//sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) +//sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) + +func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) { + if pathname == "" { + return fanotifyMark(fd, flags, mask, dirFd, nil) + } + p, err := BytePtrFromString(pathname) + if err != nil { + return err + } + return fanotifyMark(fd, flags, mask, dirFd, p) +} + +//sys fchmodat(dirfd int, path string, mode uint32) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + // Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior + // and check the flags. Otherwise the mode would be applied to the symlink + // destination which is not what the user expects. + if flags&^AT_SYMLINK_NOFOLLOW != 0 { + return EINVAL + } else if flags&AT_SYMLINK_NOFOLLOW != 0 { + return EOPNOTSUPP + } + return fchmodat(dirfd, path, mode) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req uint, value int) error { + v := int32(value) + return ioctl(fd, req, uintptr(unsafe.Pointer(&v))) +} + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetRTCTime(fd int, value *RTCTime) error { + err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetRTCTime(fd int) (*RTCTime, error) { + var value RTCTime + err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) + +func Link(oldpath string, newpath string) (err error) { + return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0) +} + +func Mkdir(path string, mode uint32) (err error) { + return Mkdirat(AT_FDCWD, path, mode) +} + +func Mknod(path string, mode uint32, dev int) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + return openat(dirfd, path, flags|O_LARGEFILE, mode) +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) + +func Readlink(path string, buf []byte) (n int, err error) { + return Readlinkat(AT_FDCWD, path, buf) +} + +func Rename(oldpath string, newpath string) (err error) { + return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath) +} + +func Rmdir(path string) error { + return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR) +} + +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) + +func Symlink(oldpath string, newpath string) (err error) { + return Symlinkat(oldpath, AT_FDCWD, newpath) +} + +func Unlink(path string) error { + return Unlinkat(AT_FDCWD, path, 0) +} + +//sys Unlinkat(dirfd int, path string, flags int) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + var ts [2]Timespec + ts[0] = NsecToTimespec(TimevalToNsec(tv[0])) + ts[1] = NsecToTimespec(TimevalToNsec(tv[1])) + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // If the utimensat syscall isn't available (utimensat was added to Linux + // in 2.6.22, Released, 8 July 2007) then fall back to utimes + var tv [2]Timeval + for i := 0; i < 2; i++ { + tv[i] = NsecToTimeval(TimespecToNsec(ts[i])) + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func Futimesat(dirfd int, path string, tv []Timeval) error { + if tv == nil { + return futimesat(dirfd, path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Futimes(fd int, tv []Timeval) (err error) { + // Believe it or not, this is the best we can do on Linux + // (and is what glibc does). + return Utimes("/proc/self/fd/"+itoa(fd), tv) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w & mask) +} + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { + if w.StopSignal() != SIGTRAP { + return -1 + } + return int(w>>shift) >> 8 +} + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +func Mkfifo(path string, mode uint32) error { + return Mknod(path, mode|S_IFIFO, 0) +} + +func Mkfifoat(dirfd int, path string, mode uint32) error { + return Mknodat(dirfd, path, mode|S_IFIFO, 0) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets. +type SockaddrLinklayer struct { + Protocol uint16 + Ifindex int + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]byte + raw RawSockaddrLinklayer +} + +func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_PACKET + sa.raw.Protocol = sa.Protocol + sa.raw.Ifindex = int32(sa.Ifindex) + sa.raw.Hatype = sa.Hatype + sa.raw.Pkttype = sa.Pkttype + sa.raw.Halen = sa.Halen + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil +} + +// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets. +type SockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 + raw RawSockaddrNetlink +} + +func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_NETLINK + sa.raw.Pad = sa.Pad + sa.raw.Pid = sa.Pid + sa.raw.Groups = sa.Groups + return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil +} + +// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the HCI protocol. +type SockaddrHCI struct { + Dev uint16 + Channel uint16 + raw RawSockaddrHCI +} + +func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Dev = sa.Dev + sa.raw.Channel = sa.Channel + return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil +} + +// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the L2CAP protocol. +type SockaddrL2 struct { + PSM uint16 + CID uint16 + Addr [6]uint8 + AddrType uint8 + raw RawSockaddrL2 +} + +func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) + psm[0] = byte(sa.PSM) + psm[1] = byte(sa.PSM >> 8) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] + } + cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) + cid[0] = byte(sa.CID) + cid[1] = byte(sa.CID >> 8) + sa.raw.Bdaddr_type = sa.AddrType + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil +} + +// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the RFCOMM protocol. +// +// Server example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) +// +// Client example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) +type SockaddrRFCOMM struct { + // Addr represents a bluetooth address, byte ordering is little-endian. + Addr [6]uint8 + + // Channel is a designated bluetooth channel, only 1-30 are available for use. + // Since Linux 2.6.7 and further zero value is the first available channel. + Channel uint8 + + raw RawSockaddrRFCOMM +} + +func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Channel = sa.Channel + sa.raw.Bdaddr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil +} + +// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. +// The RxID and TxID fields are used for transport protocol addressing in +// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with +// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning. +// +// The SockaddrCAN struct must be bound to the socket file descriptor +// using Bind before the CAN socket can be used. +// +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) +// +// The full SocketCAN documentation can be found in the linux kernel +// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt +type SockaddrCAN struct { + Ifindex int + RxID uint32 + TxID uint32 + raw RawSockaddrCAN +} + +func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i] = rx[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i+4] = tx[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. +// SockaddrALG enables userspace access to the Linux kernel's cryptography +// subsystem. The Type and Name fields specify which type of hash or cipher +// should be used with a given socket. +// +// To create a file descriptor that provides access to a hash or cipher, both +// Bind and Accept must be used. Once the setup process is complete, input +// data can be written to the socket, processed by the kernel, and then read +// back as hash output or ciphertext. +// +// Here is an example of using an AF_ALG socket with SHA1 hashing. +// The initial socket setup process is as follows: +// +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// +// Once a file descriptor has been returned from Accept, it may be used to +// perform SHA1 hashing. The descriptor is not safe for concurrent use, but +// may be re-used repeatedly with subsequent Write and Read operations. +// +// When hashing a small byte slice or string, a single Write and Read may +// be used: +// +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// +// For hashing larger byte slices, or byte streams such as those read from +// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update +// the hash digest instead of creating a new one for a given chunk and finalizing it. +// +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// +// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. +type SockaddrALG struct { + Type string + Name string + Feature uint32 + Mask uint32 + raw RawSockaddrALG +} + +func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { + // Leave room for NUL byte terminator. + if len(sa.Type) > 13 { + return nil, 0, EINVAL + } + if len(sa.Name) > 63 { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_ALG + sa.raw.Feat = sa.Feature + sa.raw.Mask = sa.Mask + + typ, err := ByteSliceFromString(sa.Type) + if err != nil { + return nil, 0, err + } + name, err := ByteSliceFromString(sa.Name) + if err != nil { + return nil, 0, err + } + + copy(sa.raw.Type[:], typ) + copy(sa.raw.Name[:], name) + + return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +type SockaddrXDP struct { + Flags uint16 + Ifindex uint32 + QueueID uint32 + SharedUmemFD uint32 + raw RawSockaddrXDP +} + +func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_XDP + sa.raw.Flags = sa.Flags + sa.raw.Ifindex = sa.Ifindex + sa.raw.Queue_id = sa.QueueID + sa.raw.Shared_umem_fd = sa.SharedUmemFD + + return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil +} + +// This constant mirrors the #define of PX_PROTO_OE in +// linux/if_pppox.h. We're defining this by hand here instead of +// autogenerating through mkerrors.sh because including +// linux/if_pppox.h causes some declaration conflicts with other +// includes (linux/if_pppox.h includes linux/in.h, which conflicts +// with netinet/in.h). Given that we only need a single zero constant +// out of that file, it's cleaner to just define it by hand here. +const px_proto_oe = 0 + +type SockaddrPPPoE struct { + SID uint16 + Remote net.HardwareAddr + Dev string + raw RawSockaddrPPPoX +} + +func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) { + if len(sa.Remote) != 6 { + return nil, 0, EINVAL + } + if len(sa.Dev) > IFNAMSIZ-1 { + return nil, 0, EINVAL + } + + *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX + // This next field is in host-endian byte order. We can't use the + // same unsafe pointer cast as above, because this value is not + // 32-bit aligned and some architectures don't allow unaligned + // access. + // + // However, the value of px_proto_oe is 0, so we can use + // encoding/binary helpers to write the bytes without worrying + // about the ordering. + binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe) + // This field is deliberately big-endian, unlike the previous + // one. The kernel expects SID to be in network byte order. + binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID) + copy(sa.raw[8:14], sa.Remote) + for i := 14; i < 14+IFNAMSIZ; i++ { + sa.raw[i] = 0 + } + copy(sa.raw[14:], sa.Dev) + return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_NETLINK: + pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa)) + sa := new(SockaddrNetlink) + sa.Family = pp.Family + sa.Pad = pp.Pad + sa.Pid = pp.Pid + sa.Groups = pp.Groups + return sa, nil + + case AF_PACKET: + pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa)) + sa := new(SockaddrLinklayer) + sa.Protocol = pp.Protocol + sa.Ifindex = int(pp.Ifindex) + sa.Hatype = pp.Hatype + sa.Pkttype = pp.Pkttype + sa.Halen = pp.Halen + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil + case AF_BLUETOOTH: + proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + if err != nil { + return nil, err + } + // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections + switch proto { + case BTPROTO_L2CAP: + pp := (*RawSockaddrL2)(unsafe.Pointer(rsa)) + sa := &SockaddrL2{ + PSM: pp.Psm, + CID: pp.Cid, + Addr: pp.Bdaddr, + AddrType: pp.Bdaddr_type, + } + return sa, nil + case BTPROTO_RFCOMM: + pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa)) + sa := &SockaddrRFCOMM{ + Channel: pp.Channel, + Addr: pp.Bdaddr, + } + return sa, nil + } + case AF_XDP: + pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa)) + sa := &SockaddrXDP{ + Flags: pp.Flags, + Ifindex: pp.Ifindex, + QueueID: pp.Queue_id, + SharedUmemFD: pp.Shared_umem_fd, + } + return sa, nil + case AF_PPPOX: + pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa)) + if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe { + return nil, EINVAL + } + sa := &SockaddrPPPoE{ + SID: binary.BigEndian.Uint16(pp[6:8]), + Remote: net.HardwareAddr(pp[8:14]), + } + for i := 14; i < 14+IFNAMSIZ; i++ { + if pp[i] == 0 { + sa.Dev = string(pp[14:i]) + break + } + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptUcred(fd, level, opt int) (*Ucred, error) { + var value Ucred + vallen := _Socklen(SizeofUcred) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + var value TCPInfo + vallen := _Socklen(SizeofTCPInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + if err == ERANGE { + buf = make([]byte, vallen) + err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + } + if err != nil { + return "", err + } + } + return string(buf[:vallen-1]), nil +} + +func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) { + var value TpacketStats + vallen := _Socklen(SizeofTpacketStats) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) { + var value TpacketStatsV3 + vallen := _Socklen(SizeofTpacketStatsV3) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a +// socket to filter incoming packets. See 'man 7 socket' for usage information. +func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error { + return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog)) +} + +func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error { + var p unsafe.Pointer + if len(filter) > 0 { + p = unsafe.Pointer(&filter[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter)) +} + +func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) + +// KeyctlInt calls keyctl commands in which each argument is an int. +// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK, +// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT, +// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT, +// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT. +//sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlBuffer calls keyctl commands in which the third and fourth +// arguments are a buffer and its length, respectively. +// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE. +//sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlString calls keyctl commands which return a string. +// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY. +func KeyctlString(cmd int, id int) (string, error) { + // We must loop as the string data may change in between the syscalls. + // We could allocate a large buffer here to reduce the chance that the + // syscall needs to be called twice; however, this is unnecessary as + // the performance loss is negligible. + var buffer []byte + for { + // Try to fill the buffer with data + length, err := KeyctlBuffer(cmd, id, buffer, 0) + if err != nil { + return "", err + } + + // Check if the data was written + if length <= len(buffer) { + // Exclude the null terminator + return string(buffer[:length-1]), nil + } + + // Make a bigger buffer if needed + buffer = make([]byte, length) + } +} + +// Keyctl commands with special signatures. + +// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html +func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) { + createInt := 0 + if create { + createInt = 1 + } + return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0) +} + +// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the +// key handle permission mask as described in the "keyctl setperm" section of +// http://man7.org/linux/man-pages/man1/keyctl.1.html. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html +func KeyctlSetperm(id int, perm uint32) error { + _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0) + return err +} + +//sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL + +// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html +func KeyctlJoinSessionKeyring(name string) (ringid int, err error) { + return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name) +} + +//sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlSearch implements the KEYCTL_SEARCH command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_search.3.html +func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) { + return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid) +} + +//sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL + +// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This +// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice +// of Iovec (each of which represents a buffer) instead of a single buffer. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html +func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error { + return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid) +} + +//sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL + +// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command +// computes a Diffie-Hellman shared secret based on the provide params. The +// secret is written to the provided buffer and the returned size is the number +// of bytes written (returning an error if there is insufficient space in the +// buffer). If a nil buffer is passed in, this function returns the minimum +// buffer length needed to store the appropriate data. Note that this differs +// from KEYCTL_READ's behavior which always returns the requested payload size. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html +func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) { + return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = &p[0] + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + if len(p) == 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } + // receive at least one normal byte + if sockType != SOCK_DGRAM { + iov.Base = &dummy + iov.SetLen(1) + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(ptr) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = &p[0] + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + if len(p) == 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } + // send at least one normal byte + if sockType != SOCK_DGRAM { + iov.Base = &dummy + iov.SetLen(1) + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +// BindToDevice binds the socket associated with fd to device. +func BindToDevice(fd int, device string) (err error) { + return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device) +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + +func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) { + // The peek requests are machine-size oriented, so we wrap it + // to retrieve arbitrary-length data. + + // The ptrace syscall differs from glibc's ptrace. + // Peeks returns the word in *data, not as the return value. + + var buf [SizeofPtr]byte + + // Leading edge. PEEKTEXT/PEEKDATA don't require aligned + // access (PEEKUSER warns that it might), but if we don't + // align our reads, we might straddle an unmapped page + // boundary and not get the bytes leading up to the page + // boundary. + n := 0 + if addr%SizeofPtr != 0 { + err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return 0, err + } + n += copy(out, buf[addr%SizeofPtr:]) + out = out[n:] + } + + // Remainder. + for len(out) > 0 { + // We use an internal buffer to guarantee alignment. + // It's not documented if this is necessary, but we're paranoid. + err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return n, err + } + copied := copy(out, buf[0:]) + n += copied + out = out[copied:] + } + + return n, nil +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKDATA, pid, addr, out) +} + +func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKUSR, pid, addr, out) +} + +func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) { + // As for ptracePeek, we need to align our accesses to deal + // with the possibility of straddling an invalid page. + + // Leading edge. + n := 0 + if addr%SizeofPtr != 0 { + var buf [SizeofPtr]byte + err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return 0, err + } + n += copy(buf[addr%SizeofPtr:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word) + if err != nil { + return 0, err + } + data = data[n:] + } + + // Interior. + for len(data) > SizeofPtr { + word := *((*uintptr)(unsafe.Pointer(&data[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += SizeofPtr + data = data[SizeofPtr:] + } + + // Trailing edge. + if len(data) > 0 { + var buf [SizeofPtr]byte + err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return n, err + } + copy(buf[0:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += len(data) + } + + return n, nil +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) +} + +func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) +} + +func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +func PtraceSetOptions(pid int, options int) (err error) { + return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) +} + +func PtraceGetEventMsg(pid int) (msg uint, err error) { + var data _C_long + err = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data))) + msg = uint(data) + return +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 0, uintptr(signal)) +} + +func PtraceSyscall(pid int, signal int) (err error) { + return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal)) +} + +func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } + +func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } + +func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } + +//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) + +func Reboot(cmd int) (err error) { + return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + return Getdents(fd, buf) +} + +//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) + +func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + // Certain file systems get rather angry and EINVAL if you give + // them an empty string of data, rather than NULL. + if data == "" { + return mount(source, target, fstype, flags, nil) + } + datap, err := BytePtrFromString(data) + if err != nil { + return err + } + return mount(source, target, fstype, flags, datap) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// Sendto +// Recvfrom +// Socketpair + +/* + * Direct access + */ +//sys Acct(path string) (err error) +//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) +//sys Adjtimex(buf *Timex) (state int, err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys ClockGetres(clockid int32, res *Timespec) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) +//sys Close(fd int) (err error) +//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys DeleteModule(name string, flags int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sysnb EpollCreate1(flag int) (fd int, err error) +//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 +//sys Exit(code int) = SYS_EXIT_GROUP +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys FinitModule(fd int, params string, flags int) (err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) +//sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 +//sysnb Getpgid(pid int) (pgid int, err error) + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sys Getrandom(buf []byte, flags int) (n int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettid() (tid int) +//sys Getxattr(path string, attr string, dest []byte) (sz int, err error) +//sys InitModule(moduleImage []byte, params string) (err error) +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) +//sysnb InotifyInit1(flags int) (fd int, err error) +//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG +//sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error) +//sys Listxattr(path string, dest []byte) (sz int, err error) +//sys Llistxattr(path string, dest []byte) (sz int, err error) +//sys Lremovexattr(path string, attr string) (err error) +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) +//sys MemfdCreate(name string, flags int) (fd int, err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) +//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT +//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 +//sys read(fd int, p []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) +//sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) +//sys Setns(fd int, nstype int) (err error) + +// issue 1435. +// On linux Setuid and Setgid only affects the current thread, not the process. +// This does not match what most callers expect so we must return an error +// here rather than letting the caller think that the call succeeded. + +func Setuid(uid int) (err error) { + return EOPNOTSUPP +} + +func Setgid(uid int) (err error) { + return EOPNOTSUPP +} + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setxattr(path string, attr string, data []byte, flags int) (err error) +//sys Signalfd(fd int, mask *Sigset_t, flags int) = SYS_SIGNALFD4 +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Syncfs(fd int) (err error) +//sysnb Sysinfo(info *Sysinfo_t) (err error) +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2 +//sys Unshare(flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys exitThread(code int) (err error) = SYS_EXIT +//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ +//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE + +// mmap varies by architecture; see syscall_linux_*.go. +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, +// using the specified flags. +func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { + var p unsafe.Pointer + if len(iovs) > 0 { + p = unsafe.Pointer(&iovs[0]) + } + + n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0) + if errno != 0 { + return 0, syscall.Errno(errno) + } + + return int(n), nil +} + +//sys faccessat(dirfd int, path string, mode uint32) (err error) + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { + return EINVAL + } + + // The Linux kernel faccessat system call does not take any flags. + // The glibc faccessat implements the flags itself; see + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD + // Because people naturally expect syscall.Faccessat to act + // like C faccessat, we do the same. + + if flags == 0 { + return faccessat(dirfd, path, mode) + } + + var st Stat_t + if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil { + return err + } + + mode &= 7 + if mode == 0 { + return nil + } + + var uid int + if flags&AT_EACCESS != 0 { + uid = Geteuid() + } else { + uid = Getuid() + } + + if uid == 0 { + if mode&1 == 0 { + // Root can read and write any file. + return nil + } + if st.Mode&0111 != 0 { + // Root can execute any file that anybody can execute. + return nil + } + return EACCES + } + + var fmode uint32 + if uint32(uid) == st.Uid { + fmode = (st.Mode >> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES +} + +//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT +//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT + +// fileHandle is the argument to nameToHandleAt and openByHandleAt. We +// originally tried to generate it via unix/linux/types.go with "type +// fileHandle C.struct_file_handle" but that generated empty structs +// for mips64 and mips64le. Instead, hard code it for now (it's the +// same everywhere else) until the mips64 generator issue is fixed. +type fileHandle struct { + Bytes uint32 + Type int32 +} + +// FileHandle represents the C struct file_handle used by +// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see +// OpenByHandleAt). +type FileHandle struct { + *fileHandle +} + +// NewFileHandle constructs a FileHandle. +func NewFileHandle(handleType int32, handle []byte) FileHandle { + const hdrSize = unsafe.Sizeof(fileHandle{}) + buf := make([]byte, hdrSize+uintptr(len(handle))) + copy(buf[hdrSize:], handle) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Type = handleType + fh.Bytes = uint32(len(handle)) + return FileHandle{fh} +} + +func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) } +func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type } +func (fh *FileHandle) Bytes() []byte { + n := fh.Size() + if n == 0 { + return nil + } + return (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n:n] +} + +// NameToHandleAt wraps the name_to_handle_at system call; it obtains +// a handle for a path name. +func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) { + var mid _C_int + // Try first with a small buffer, assuming the handle will + // only be 32 bytes. + size := uint32(32 + unsafe.Sizeof(fileHandle{})) + didResize := false + for { + buf := make([]byte, size) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{})) + err = nameToHandleAt(dirfd, path, fh, &mid, flags) + if err == EOVERFLOW { + if didResize { + // We shouldn't need to resize more than once + return + } + didResize = true + size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{})) + continue + } + if err != nil { + return + } + return FileHandle{fh}, int(mid), nil + } +} + +// OpenByHandleAt wraps the open_by_handle_at system call; it opens a +// file via a handle as previously returned by NameToHandleAt. +func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) { + return openByHandleAt(mountFD, handle.fileHandle, flags) +} + +/* + * Unimplemented + */ +// AfsSyscall +// Alarm +// ArchPrctl +// Brk +// Capget +// Capset +// ClockNanosleep +// ClockSettime +// Clone +// EpollCtlOld +// EpollPwait +// EpollWaitOld +// Execve +// Fork +// Futex +// GetKernelSyms +// GetMempolicy +// GetRobustList +// GetThreadArea +// Getitimer +// Getpmsg +// IoCancel +// IoDestroy +// IoGetevents +// IoSetup +// IoSubmit +// IoprioGet +// IoprioSet +// KexecLoad +// LookupDcookie +// Mbind +// MigratePages +// Mincore +// ModifyLdt +// Mount +// MovePages +// MqGetsetattr +// MqNotify +// MqOpen +// MqTimedreceive +// MqTimedsend +// MqUnlink +// Mremap +// Msgctl +// Msgget +// Msgrcv +// Msgsnd +// Nfsservctl +// Personality +// Pselect6 +// Ptrace +// Putpmsg +// Quotactl +// Readahead +// Readv +// RemapFilePages +// RestartSyscall +// RtSigaction +// RtSigpending +// RtSigprocmask +// RtSigqueueinfo +// RtSigreturn +// RtSigsuspend +// RtSigtimedwait +// SchedGetPriorityMax +// SchedGetPriorityMin +// SchedGetparam +// SchedGetscheduler +// SchedRrGetInterval +// SchedSetparam +// SchedYield +// Security +// Semctl +// Semget +// Semop +// Semtimedop +// SetMempolicy +// SetRobustList +// SetThreadArea +// SetTidAddress +// Shmat +// Shmctl +// Shmdt +// Shmget +// Sigaltstack +// Swapoff +// Swapon +// Sysfs +// TimerCreate +// TimerDelete +// TimerGetoverrun +// TimerGettime +// TimerSettime +// Timerfd +// Tkill (obsolete) +// Tuxcall +// Umount2 +// Uselib +// Utimensat +// Vfork +// Vhangup +// Vserver +// Waitid +// _Sysctl diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go new file mode 100644 index 000000000..e2f8cf6e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -0,0 +1,386 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP) +// so that go vet can check that they are correct. + +// +build 386,linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +// 64-bit file system and 32-bit uid calls +// (386 default is 32-bit file system and 16-bit uid). +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32 +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 +//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) +//sys Pause() (err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +// On x86 Linux, all the socket calls go through an extra indirection, +// I think because the 5-register system call interface can't handle +// the 6-argument calls like sendto and recvfrom. Instead the +// arguments to the underlying system call are the number below +// and a pointer to an array of uintptr. We hide the pointer in the +// socketcall assembly to avoid allocation on every system call. + +const ( + // see linux/net.h + _SOCKET = 1 + _BIND = 2 + _CONNECT = 3 + _LISTEN = 4 + _ACCEPT = 5 + _GETSOCKNAME = 6 + _GETPEERNAME = 7 + _SOCKETPAIR = 8 + _SEND = 9 + _RECV = 10 + _SENDTO = 11 + _RECVFROM = 12 + _SHUTDOWN = 13 + _SETSOCKOPT = 14 + _GETSOCKOPT = 15 + _SENDMSG = 16 + _RECVMSG = 17 + _ACCEPT4 = 18 + _RECVMMSG = 19 + _SENDMMSG = 20 +) + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e != 0 { + err = e + } + return +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socket(domain int, typ int, proto int) (fd int, err error) { + fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e != 0 { + err = e + } + return +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0) + if e != 0 { + err = e + } + return +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + if e != 0 { + err = e + } + return +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e != 0 { + err = e + } + return +} + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Listen(s int, n int) (err error) { + _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Shutdown(s, how int) (err error) { + _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go new file mode 100644 index 000000000..87a30744d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -0,0 +1,190 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,linux + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb inotifyInit() (fd int, err error) + +func InotifyInit() (fd int, err error) { + // First try inotify_init1, because Android's seccomp policy blocks the latter. + fd, err = InotifyInit1(0) + if err == ENOSYS { + fd, err = inotifyInit() + } + return +} + +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + // Use fstatat, because Android's seccomp policy blocks stat. + return Fstatat(AT_FDCWD, path, stat, 0) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + errno := gettimeofday(tv) + if errno != 0 { + return errno + } + return nil +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + errno := gettimeofday(&tv) + if errno != 0 { + return 0, errno + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Rip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go new file mode 100644 index 000000000..21a4946ba --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -0,0 +1,13 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,linux +// +build !gccgo + +package unix + +import "syscall" + +//go:noescape +func gettimeofday(tv *Timeval) (err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go new file mode 100644 index 000000000..3a3c37b4c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -0,0 +1,274 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,linux + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + // Try pipe2 first for Android O, then try pipe for kernel 2.6.23. + err = pipe2(&pp, 0) + if err == ENOSYS { + err = pipe(&pp) + } + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +// 64-bit file system and 32-bit uid calls +// (16-bit uid calls are not always supported in newer kernels) +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32 +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 +//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and arm_sync_file_range syscalls differ only in the + // order of their arguments. + return armSyncFileRange(fd, flags, off, n) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go new file mode 100644 index 000000000..cb20b15d5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -0,0 +1,223 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go new file mode 100644 index 000000000..c26e6ec23 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo + +package unix + +// SyscallNoError may be used instead of Syscall for syscalls that don't fail. +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) + +// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't +// fail. +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go new file mode 100644 index 000000000..070bd3899 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo,386 + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go new file mode 100644 index 000000000..308eb7aec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} + +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go new file mode 100644 index 000000000..aa7fc9e19 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -0,0 +1,20 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go new file mode 100644 index 000000000..b3b21ec1e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -0,0 +1,222 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips64 mips64le + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +type stat_t struct { + Dev uint32 + Pad0 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad1 [3]uint32 + Size int64 + Atime uint32 + Atime_nsec uint32 + Mtime uint32 + Mtime_nsec uint32 + Ctime uint32 + Ctime_nsec uint32 + Blksize uint32 + Pad2 uint32 + Blocks int64 +} + +//sys fstat(fd int, st *stat_t) (err error) +//sys fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys lstat(path string, st *stat_t) (err error) +//sys stat(path string, st *stat_t) (err error) + +func Fstat(fd int, s *Stat_t) (err error) { + st := &stat_t{} + err = fstat(fd, st) + fillStat_t(s, st) + return +} + +func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) { + st := &stat_t{} + err = fstatat(dirfd, path, st, flags) + fillStat_t(s, st) + return +} + +func Lstat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = lstat(path, st) + fillStat_t(s, st) + return +} + +func Stat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = stat(path, st) + fillStat_t(s, st) + return +} + +func fillStat_t(s *Stat_t, st *stat_t) { + s.Dev = st.Dev + s.Ino = st.Ino + s.Mode = st.Mode + s.Nlink = st.Nlink + s.Uid = st.Uid + s.Gid = st.Gid + s.Rdev = st.Rdev + s.Size = st.Size + s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)} + s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)} + s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)} + s.Blksize = st.Blksize + s.Blocks = st.Blocks +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go new file mode 100644 index 000000000..5144d4e13 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -0,0 +1,234 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 + +//sys Pause() (err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + p, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0) + if e != 0 { + err = errnoErr(e) + } + return +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe() (p1 int, p2 int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go new file mode 100644 index 000000000..0a100b66a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -0,0 +1,152 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64 ppc64le + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go new file mode 100644 index 000000000..6230f6405 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -0,0 +1,226 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go new file mode 100644 index 000000000..f81dbdc9c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -0,0 +1,338 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build s390x,linux + +package unix + +import ( + "unsafe" +) + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0. + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct. +// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in . +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)} + r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// On s390x Linux, all the socket calls go through an extra indirection. +// The arguments to the underlying system call (SYS_SOCKETCALL) are the +// number below and a pointer to an array of uintptr. +const ( + // see linux/net.h + netSocket = 1 + netBind = 2 + netConnect = 3 + netListen = 4 + netAccept = 5 + netGetSockName = 6 + netGetPeerName = 7 + netSocketPair = 8 + netSend = 9 + netRecv = 10 + netSendTo = 11 + netRecvFrom = 12 + netShutdown = 13 + netSetSockOpt = 14 + netGetSockOpt = 15 + netSendMsg = 16 + netRecvMsg = 17 + netAccept4 = 18 + netRecvMMsg = 19 + netSendMMsg = 20 +) + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) { + args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) error { + args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socket(domain int, typ int, proto int) (int, error) { + args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)} + fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))} + _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error { + args := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)} + _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func Listen(s int, n int) error { + args := [2]uintptr{uintptr(s), uintptr(n)} + _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func Shutdown(s, how int) error { + args := [2]uintptr{uintptr(s), uintptr(how)} + _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go new file mode 100644 index 000000000..b69565616 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -0,0 +1,147 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build sparc64,linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func (r *PtraceRegs) PC() uint64 { return r.Tpc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go new file mode 100644 index 000000000..5240e16e4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -0,0 +1,622 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// NetBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, CTL_QUERY) + qnode := Sysctlnode{Flags: SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err = sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes = make([]Sysctlnode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err = sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) (mib []_C_int, err error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, _C_int(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, EINVAL + } + } + + return mib, nil +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +//sysnb pipe() (fd1 int, fd2 int, err error) +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys getdents(fd int, buf []byte) (n int, err error) +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return getdents(fd, buf) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { + var value Ptmget + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + runtime.KeepAlive(value) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// ____semctl13 +// __clone +// __fhopen40 +// __fhstat40 +// __fhstatvfs140 +// __fstat30 +// __getcwd +// __getfh30 +// __getlogin +// __lstat30 +// __mount50 +// __msgctl13 +// __msync13 +// __ntp_gettime30 +// __posix_chown +// __posix_fchown +// __posix_lchown +// __posix_rename +// __setlogin +// __shmctl13 +// __sigaction_sigtramp +// __sigaltstack14 +// __sigpending14 +// __sigprocmask14 +// __sigsuspend14 +// __sigtimedwait +// __stat30 +// __syscall +// __vfork14 +// _ksem_close +// _ksem_destroy +// _ksem_getvalue +// _ksem_init +// _ksem_open +// _ksem_post +// _ksem_trywait +// _ksem_unlink +// _ksem_wait +// _lwp_continue +// _lwp_create +// _lwp_ctl +// _lwp_detach +// _lwp_exit +// _lwp_getname +// _lwp_getprivate +// _lwp_kill +// _lwp_park +// _lwp_self +// _lwp_setname +// _lwp_setprivate +// _lwp_suspend +// _lwp_unpark +// _lwp_unpark_all +// _lwp_wait +// _lwp_wakeup +// _pset_bind +// _sched_getaffinity +// _sched_getparam +// _sched_setaffinity +// _sched_setparam +// acct +// aio_cancel +// aio_error +// aio_fsync +// aio_read +// aio_return +// aio_suspend +// aio_write +// break +// clock_getres +// clock_gettime +// clock_settime +// compat_09_ogetdomainname +// compat_09_osetdomainname +// compat_09_ouname +// compat_10_omsgsys +// compat_10_osemsys +// compat_10_oshmsys +// compat_12_fstat12 +// compat_12_getdirentries +// compat_12_lstat12 +// compat_12_msync +// compat_12_oreboot +// compat_12_oswapon +// compat_12_stat12 +// compat_13_sigaction13 +// compat_13_sigaltstack13 +// compat_13_sigpending13 +// compat_13_sigprocmask13 +// compat_13_sigreturn13 +// compat_13_sigsuspend13 +// compat_14___semctl +// compat_14_msgctl +// compat_14_shmctl +// compat_16___sigaction14 +// compat_16___sigreturn14 +// compat_20_fhstatfs +// compat_20_fstatfs +// compat_20_getfsstat +// compat_20_statfs +// compat_30___fhstat30 +// compat_30___fstat13 +// compat_30___lstat13 +// compat_30___stat13 +// compat_30_fhopen +// compat_30_fhstat +// compat_30_fhstatvfs1 +// compat_30_getdents +// compat_30_getfh +// compat_30_ntp_gettime +// compat_30_socket +// compat_40_mount +// compat_43_fstat43 +// compat_43_lstat43 +// compat_43_oaccept +// compat_43_ocreat +// compat_43_oftruncate +// compat_43_ogetdirentries +// compat_43_ogetdtablesize +// compat_43_ogethostid +// compat_43_ogethostname +// compat_43_ogetkerninfo +// compat_43_ogetpagesize +// compat_43_ogetpeername +// compat_43_ogetrlimit +// compat_43_ogetsockname +// compat_43_okillpg +// compat_43_olseek +// compat_43_ommap +// compat_43_oquota +// compat_43_orecv +// compat_43_orecvfrom +// compat_43_orecvmsg +// compat_43_osend +// compat_43_osendmsg +// compat_43_osethostid +// compat_43_osethostname +// compat_43_osetrlimit +// compat_43_osigblock +// compat_43_osigsetmask +// compat_43_osigstack +// compat_43_osigvec +// compat_43_otruncate +// compat_43_owait +// compat_43_stat43 +// execve +// extattr_delete_fd +// extattr_delete_file +// extattr_delete_link +// extattr_get_fd +// extattr_get_file +// extattr_get_link +// extattr_list_fd +// extattr_list_file +// extattr_list_link +// extattr_set_fd +// extattr_set_file +// extattr_set_link +// extattrctl +// fchroot +// fdatasync +// fgetxattr +// fktrace +// flistxattr +// fork +// fremovexattr +// fsetxattr +// fstatvfs1 +// fsync_range +// getcontext +// getitimer +// getvfsstat +// getxattr +// ktrace +// lchflags +// lchmod +// lfs_bmapv +// lfs_markv +// lfs_segclean +// lfs_segwait +// lgetxattr +// lio_listio +// listxattr +// llistxattr +// lremovexattr +// lseek +// lsetxattr +// lutimes +// madvise +// mincore +// minherit +// modctl +// mq_close +// mq_getattr +// mq_notify +// mq_open +// mq_receive +// mq_send +// mq_setattr +// mq_timedreceive +// mq_timedsend +// mq_unlink +// mremap +// msgget +// msgrcv +// msgsnd +// nfssvc +// ntp_adjtime +// pmc_control +// pmc_get_info +// pollts +// preadv +// profil +// pselect +// pset_assign +// pset_create +// pset_destroy +// ptrace +// pwritev +// quotactl +// rasctl +// readv +// reboot +// removexattr +// sa_enable +// sa_preempt +// sa_register +// sa_setconcurrency +// sa_stacks +// sa_yield +// sbrk +// sched_yield +// semconfig +// semget +// semop +// setcontext +// setitimer +// setxattr +// shmat +// shmdt +// shmget +// sstk +// statvfs1 +// swapctl +// sysarch +// syscall +// timer_create +// timer_delete +// timer_getoverrun +// timer_gettime +// timer_settime +// undelete +// utrace +// uuidgen +// vadvise +// vfork +// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go new file mode 100644 index 000000000..24f74e58c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -0,0 +1,33 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go new file mode 100644 index 000000000..6878bf7ff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -0,0 +1,33 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go new file mode 100644 index 000000000..dbbfcf71d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -0,0 +1,33 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go new file mode 100644 index 000000000..f3434465a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -0,0 +1,33 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go new file mode 100644 index 000000000..c8648ec02 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -0,0 +1,416 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// OpenBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sort" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 + raw RawSockaddrDatalink +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func nametomib(name string) (mib []_C_int, err error) { + i := sort.Search(len(sysctlMib), func(i int) bool { + return sysctlMib[i].ctlname >= name + }) + if i < len(sysctlMib) && sysctlMib[i].ctlname == name { + return sysctlMib[i].ctloid, nil + } + return nil, EINVAL +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofUvmexp { + return nil, EIO + } + return &u, nil +} + +//sysnb pipe(p *[2]_C_int) (err error) +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys getdents(fd int, buf []byte) (n int, err error) +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return getdents(fd, buf) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrtable() (rtable int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setrtable(rtable int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// __getcwd +// __semctl +// __syscall +// __sysctl +// adjfreq +// break +// clock_getres +// clock_gettime +// clock_settime +// closefrom +// execve +// fcntl +// fhopen +// fhstat +// fhstatfs +// fork +// futimens +// getfh +// getgid +// getitimer +// getlogin +// getresgid +// getresuid +// getthrid +// ktrace +// lfs_bmapv +// lfs_markv +// lfs_segclean +// lfs_segwait +// mincore +// minherit +// mount +// mquery +// msgctl +// msgget +// msgrcv +// msgsnd +// nfssvc +// nnpfspioctl +// preadv +// profil +// pwritev +// quotactl +// readv +// reboot +// renameat +// rfork +// sched_yield +// semget +// semop +// setgroups +// setitimer +// setsockopt +// shmat +// shmctl +// shmdt +// shmget +// sigaction +// sigaltstack +// sigpending +// sigprocmask +// sigreturn +// sigsuspend +// sysarch +// syscall +// threxit +// thrsigdivert +// thrsleep +// thrwakeup +// vfork +// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go new file mode 100644 index 000000000..d62da60d1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go new file mode 100644 index 000000000..9a35334cb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 000000000..5d812aaea --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,37 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go new file mode 100644 index 000000000..0fb39cf5e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -0,0 +1,37 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go new file mode 100644 index 000000000..e47801275 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -0,0 +1,737 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Solaris system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_solaris.go or syscall_unix.go. + +package unix + +import ( + "syscall" + "unsafe" +) + +// Implemented in runtime/syscall_solaris.go. +type syscallFunc uintptr + +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 + raw RawSockaddrDatalink +} + +//sysnb pipe(p *[2]_C_int) (n int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + n, err := pipe(&pp) + if n != 0 { + return err + } + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return nil +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return string(buf[:vallen-1]), nil +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + // Getcwd will return an error if it failed for any reason. + _, err = Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + // Check for error and sanity check group count. Newer versions of + // Solaris allow up to 1024 (NGROUPS_MAX). + if n < 0 || n > 1024 { + if err != nil { + return nil, err + } + return nil, EINVAL + } else if n == 0 { + return nil, nil + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if n == -1 { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // TODO(rsc): Can we use a single global basep for all calls? + return Getdents(fd, buf, new(uintptr)) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) { + var status _C_int + rpid, err := wait4(int32(pid), &status, options, rusage) + wpid := int(rpid) + if wpid == -1 { + return wpid, err + } + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return wpid, nil +} + +//sys gethostname(buf []byte) (n int, err error) + +func Gethostname() (name string, err error) { + var buf [MaxHostNameLen]byte + n, err := gethostname(buf[:]) + if n != 0 { + return "", err + } + n = clen(buf[:]) + if n < 1 { + return "", EFAULT + } + return string(buf[:n]), nil +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0) + if e1 != 0 { + return e1 + } + return nil +} + +//sys futimesat(fildes int, path *byte, times *[2]Timeval) (err error) + +func Futimesat(dirfd int, path string, tv []Timeval) error { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + if tv == nil { + return futimesat(dirfd, pathp, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// Solaris doesn't have an futimes function because it allows NULL to be +// specified as the path for futimesat. However, Go doesn't like +// NULL-style string interfaces, so this simple wrapper is provided. +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimesat(fd, nil, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // Assume path ends at NUL. + // This is not technically the Solaris semantics for + // abstract Unix domain sockets -- they are supposed + // to be uninterpreted fixed-size binary blobs -- but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = (*int8)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy int8 + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Accrightslen = int32(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Accrightslen) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*int8)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy int8 + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Accrightslen = int32(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +//sys acct(path *byte) (err error) + +func Acct(path string) (err error) { + if len(path) == 0 { + // Assume caller wants to disable accounting. + return acct(nil) + } + + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + return acct(pathp) +} + +//sys __makedev(version int, major uint, minor uint) (val uint64) + +func Mkdev(major, minor uint32) uint64 { + return __makedev(NEWDEV, uint(major), uint(minor)) +} + +//sys __major(version int, dev uint64) (val uint) + +func Major(dev uint64) uint32 { + return uint32(__major(NEWDEV, dev)) +} + +//sys __minor(version int, dev uint64) (val uint) + +func Minor(dev uint64) uint32 { + return uint32(__minor(NEWDEV, dev)) +} + +/* + * Expose the ioctl function + */ + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +func IoctlSetInt(fd int, req uint, value int) (err error) { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermio(fd int, req uint) (*Termio, error) { + var value Termio + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Creat(path string, mode uint32) (fd int, err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) +//sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgid int, err error) +//sys Geteuid() (euid int) +//sys Getegid() (egid int) +//sys Getppid() (ppid int) +//sys Getpriority(which int, who int) (n int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Setuid(uid int) (err error) +//sys Shutdown(s int, how int) (err error) = libsocket.shutdown +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs(path string, vfsstat *Statvfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Sync() (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sys Truncate(path string, length int64) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = libc.umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto +//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair +//sys write(fd int, p []byte) (n int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go new file mode 100644 index 000000000..91c32ddf0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -0,0 +1,23 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,solaris + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go new file mode 100644 index 000000000..3de37566c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -0,0 +1,431 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import ( + "bytes" + "sort" + "sync" + "syscall" + "unsafe" +) + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e syscall.Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +// Lutimes sets the access and modification times tv on path. If path refers to +// a symlink, it is not dereferenced and the timestamps are set on the symlink. +// If tv is nil, the access and modification times are set to the current time. +// Otherwise tv must contain exactly 2 elements, with access time as the first +// element and modification time as the second element. +func Lutimes(path string, tv []Timeval) error { + if tv == nil { + return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW) + } + if len(tv) != 2 { + return EINVAL + } + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go new file mode 100644 index 000000000..1c70d1b69 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -0,0 +1,15 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build !gccgo,!ppc64le,!ppc64 + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go new file mode 100644 index 000000000..86dc765ab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -0,0 +1,24 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64le ppc64 +// +build !gccgo + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall(trap, a1, a2, a3) +} +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) +} +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall(trap, a1, a2, a3) +} +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) +} diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go new file mode 100644 index 000000000..4a672f569 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -0,0 +1,82 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import "time" + +// TimespecToNsec converts a Timespec value into a number of +// nanoseconds since the Unix epoch. +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +// NsecToTimespec takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timespec value. +func NsecToTimespec(nsec int64) Timespec { + sec := nsec / 1e9 + nsec = nsec % 1e9 + if nsec < 0 { + nsec += 1e9 + sec-- + } + return setTimespec(sec, nsec) +} + +// TimeToTimespec converts t into a Timespec. +// On some 32-bit systems the range of valid Timespec values are smaller +// than that of time.Time values. So if t is out of the valid range of +// Timespec, it returns a zero Timespec and ERANGE. +func TimeToTimespec(t time.Time) (Timespec, error) { + sec := t.Unix() + nsec := int64(t.Nanosecond()) + ts := setTimespec(sec, nsec) + + // Currently all targets have either int32 or int64 for Timespec.Sec. + // If there were a new target with floating point type for it, we have + // to consider the rounding error. + if int64(ts.Sec) != sec { + return Timespec{}, ERANGE + } + return ts, nil +} + +// TimevalToNsec converts a Timeval value into a number of nanoseconds +// since the Unix epoch. +func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } + +// NsecToTimeval takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timeval value. +func NsecToTimeval(nsec int64) Timeval { + nsec += 999 // round up to microsecond + usec := nsec % 1e9 / 1e3 + sec := nsec / 1e9 + if usec < 0 { + usec += 1e6 + sec-- + } + return setTimeval(sec, usec) +} + +// Unix returns ts as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +// Unix returns tv as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch. +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch. +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go new file mode 100644 index 000000000..168d5ae77 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/unveil_openbsd.go @@ -0,0 +1,42 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "syscall" + "unsafe" +) + +// Unveil implements the unveil syscall. +// For more information see unveil(2). +// Note that the special case of blocking further +// unveil calls is handled by UnveilBlock. +func Unveil(path string, flags string) error { + pathPtr, err := syscall.BytePtrFromString(path) + if err != nil { + return err + } + flagsPtr, err := syscall.BytePtrFromString(flags) + if err != nil { + return err + } + _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0) + if e != 0 { + return e + } + return nil +} + +// UnveilBlock blocks future unveil calls. +// For more information see unveil(2). +func UnveilBlock() error { + // Both pointers must be nil. + var pathUnsafe, flagsUnsafe unsafe.Pointer + _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0) + if e != 0 { + return e + } + return nil +} diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 000000000..30c1d71f4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,240 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } else { + return unsafe.Pointer(_zero) + } +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 000000000..1def8a581 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1374 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 000000000..03187dea9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1375 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go new file mode 100644 index 000000000..3b39d7408 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x8008427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc0086924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6981 + SIOCRSLVMULTI = 0xc008693b + SIOCSDRVSPEC = 0x801c697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40087458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x20 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go new file mode 100644 index 000000000..8fe554777 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go new file mode 100644 index 000000000..7a977770d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -0,0 +1,1783 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go new file mode 100644 index 000000000..6d56d8a05 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go new file mode 100644 index 000000000..bbe6089bb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -0,0 +1,1650 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x21 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x23 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x22 + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DEFAULTBUFSIZE = 0x1000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MAX_CLONES = 0x80 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DBF = 0xf + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0x8 + EVFILT_FS = -0xa + EVFILT_MARKER = 0xf + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xa + EVFILT_TIMER = -0x7 + EVFILT_USER = -0x9 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_NODATA = 0x1000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTEXIT_LWP = 0x10000 + EXTEXIT_PROC = 0x0 + EXTEXIT_SETINT = 0x1 + EXTEXIT_SIMPLE = 0x0 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x118e72 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NPOLLING = 0x100000 + IFF_OACTIVE = 0x400 + IFF_OACTIVE_COMPAT = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_POLLING = 0x10000 + IFF_POLLING_COMPAT = 0x10000 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SMART = 0x20 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xf3 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SKIP = 0x39 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UNKNOWN = 0x102 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHLIM = 0x28 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PKTOPTIONS = 0x34 + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_RESETLOG = 0x37 + IP_FW_X = 0x31 + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CONTROL_END = 0xb + MADV_CONTROL_START = 0xa + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_INVAL = 0xa + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SETMAP = 0xb + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_NOCORE = 0x20000 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_NOSYNC = 0x800 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SIZEALIGN = 0x40000 + MAP_STACK = 0x400 + MAP_TRYFIXED = 0x10000 + MAP_VPAGETABLE = 0x2000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x20 + MNT_CMDFLAGS = 0xf0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x4 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_TRIM = 0x1000000 + MNT_UPDATE = 0x10000 + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0xf1f0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x1000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FBLOCKING = 0x10000 + MSG_FMASK = 0xffff0000 + MSG_FNONBLOCKING = 0x20000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_SYNC = 0x800 + MSG_TRUNC = 0x10 + MSG_UNUSED09 = 0x200 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x20000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x8000000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FAPPEND = 0x100000 + O_FASYNCWRITE = 0x800000 + O_FBLOCKING = 0x40000 + O_FMASK = 0xfc0000 + O_FNONBLOCKING = 0x80000 + O_FOFFSET = 0x200000 + O_FSYNC = 0x80 + O_FSYNCWRITE = 0x400000 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0xb + RTAX_MPLS1 = 0x8 + RTAX_MPLS2 = 0x9 + RTAX_MPLS3 = 0xa + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_MPLS1 = 0x100 + RTA_MPLS2 = 0x200 + RTA_MPLS3 = 0x400 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPLSOPS = 0x1000000 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x6 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_IWCAPSEGS = 0x400 + RTV_IWMAXSEGS = 0x200 + RTV_MSL = 0x100 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCADDRT = 0x8040720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691b + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDELRT = 0x8040720b + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8118691d + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc0206926 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPOLLCPU = 0xc020697e + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFTSOLEN = 0xc0206980 + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFPOLLCPU = 0x8020697d + SIOCSIFTSOLEN = 0x8020697f + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_CPUHINT = 0x1030 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDSPACE = 0x100a + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_FASTKEEP = 0x80 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x20 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0x100 + TCP_MIN_WINSHIFT = 0x5 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_SIGNATURE_ENABLE = 0x10 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCISPTMASTER = 0x20007455 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VCHECKPT = 0x13 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x0 + VM_SWZONE_SIZE_MAX = 0x4000000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EASYNC = syscall.Errno(0x63) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x63) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEDIUM = syscall.Errno(0x5d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUNUSED94 = syscall.Errno(0x5e) + EUNUSED95 = syscall.Errno(0x5f) + EUNUSED96 = syscall.Errno(0x60) + EUNUSED97 = syscall.Errno(0x61) + EUNUSED98 = syscall.Errno(0x62) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCKPT = syscall.Signal(0x21) + SIGCKPTEXIT = syscall.Signal(0x22) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOMEDIUM", "no medium found"}, + {94, "EUNUSED94", "unknown error: 94"}, + {95, "EUNUSED95", "unknown error: 95"}, + {96, "EUNUSED96", "unknown error: 96"}, + {97, "EUNUSED97", "unknown error: 97"}, + {98, "EUNUSED98", "unknown error: 98"}, + {99, "ELAST", "unknown error: 99"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread Scheduler"}, + {33, "SIGCKPT", "checkPoint"}, + {34, "SIGCKPTEXIT", "checkPointExit"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go new file mode 100644 index 000000000..d2bbaabc8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -0,0 +1,1793 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go new file mode 100644 index 000000000..4f8db783d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -0,0 +1,1794 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go new file mode 100644 index 000000000..53e5de605 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -0,0 +1,1802 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go new file mode 100644 index 000000000..d4a192fef --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -0,0 +1,1794 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go new file mode 100644 index 000000000..d180147f7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -0,0 +1,2839 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x8000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + X86_FXSR_MAGIC = 0x0 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go new file mode 100644 index 000000000..1d277a412 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -0,0 +1,2839 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ARCH_PRCTL = 0x1e + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go new file mode 100644 index 000000000..63ac45af8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -0,0 +1,2845 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x20000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETCRUNCHREGS = 0x19 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFDPIC = 0x1f + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVFPREGS = 0x1b + PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x16 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETCRUNCHREGS = 0x1a + PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVFPREGS = 0x1c + PTRACE_SETWMMXREGS = 0x13 + PTRACE_SET_SYSCALL = 0x17 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PT_DATA_ADDR = 0x10004 + PT_TEXT_ADDR = 0x10000 + PT_TEXT_END_ADDR = 0x10008 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go new file mode 100644 index 000000000..81d3259ed --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -0,0 +1,2830 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ESR_MAGIC = 0x45535201 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + EXTRA_MAGIC = 0x45585401 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FPSIMD_MAGIC = 0x46508001 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SVE_MAGIC = 0x53564501 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go new file mode 100644 index 000000000..58fc1eb9c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -0,0 +1,2846 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go new file mode 100644 index 000000000..67336da6c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -0,0 +1,2846 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go new file mode 100644 index 000000000..af030dcbb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -0,0 +1,2846 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go new file mode 100644 index 000000000..be225da7d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -0,0 +1,2846 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go new file mode 100644 index 000000000..fcbc70173 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -0,0 +1,2901 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go new file mode 100644 index 000000000..5cd3b4ed0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -0,0 +1,2901 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go new file mode 100644 index 000000000..0465451e8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -0,0 +1,2826 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go new file mode 100644 index 000000000..e1592a17a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -0,0 +1,2899 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_DISABLE_TE = 0x5010 + PTRACE_ENABLE_TE = 0x5009 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_AREA = 0x5003 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_AREA = 0x5002 + PTRACE_PEEKUSR = 0x3 + PTRACE_PEEKUSR_AREA = 0x5000 + PTRACE_PEEK_SYSTEM_CALL = 0x5007 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_AREA = 0x5005 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_AREA = 0x5004 + PTRACE_POKEUSR = 0x6 + PTRACE_POKEUSR_AREA = 0x5001 + PTRACE_POKE_SYSTEM_CALL = 0x5008 + PTRACE_PROT = 0x15 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLEBLOCK = 0xc + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TE_ABORT_RAND = 0x5011 + PTRACE_TRACEME = 0x0 + PT_ACR0 = 0x90 + PT_ACR1 = 0x94 + PT_ACR10 = 0xb8 + PT_ACR11 = 0xbc + PT_ACR12 = 0xc0 + PT_ACR13 = 0xc4 + PT_ACR14 = 0xc8 + PT_ACR15 = 0xcc + PT_ACR2 = 0x98 + PT_ACR3 = 0x9c + PT_ACR4 = 0xa0 + PT_ACR5 = 0xa4 + PT_ACR6 = 0xa8 + PT_ACR7 = 0xac + PT_ACR8 = 0xb0 + PT_ACR9 = 0xb4 + PT_CR_10 = 0x168 + PT_CR_11 = 0x170 + PT_CR_9 = 0x160 + PT_ENDREGS = 0x1af + PT_FPC = 0xd8 + PT_FPR0 = 0xe0 + PT_FPR1 = 0xe8 + PT_FPR10 = 0x130 + PT_FPR11 = 0x138 + PT_FPR12 = 0x140 + PT_FPR13 = 0x148 + PT_FPR14 = 0x150 + PT_FPR15 = 0x158 + PT_FPR2 = 0xf0 + PT_FPR3 = 0xf8 + PT_FPR4 = 0x100 + PT_FPR5 = 0x108 + PT_FPR6 = 0x110 + PT_FPR7 = 0x118 + PT_FPR8 = 0x120 + PT_FPR9 = 0x128 + PT_GPR0 = 0x10 + PT_GPR1 = 0x18 + PT_GPR10 = 0x60 + PT_GPR11 = 0x68 + PT_GPR12 = 0x70 + PT_GPR13 = 0x78 + PT_GPR14 = 0x80 + PT_GPR15 = 0x88 + PT_GPR2 = 0x20 + PT_GPR3 = 0x28 + PT_GPR4 = 0x30 + PT_GPR5 = 0x38 + PT_GPR6 = 0x40 + PT_GPR7 = 0x48 + PT_GPR8 = 0x50 + PT_GPR9 = 0x58 + PT_IEEE_IP = 0x1a8 + PT_LASTOFF = 0x1a8 + PT_ORIGGPR2 = 0xd0 + PT_PSWADDR = 0x8 + PT_PSWMASK = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go new file mode 100644 index 000000000..4be507343 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -0,0 +1,2895 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + ASI_LEON_DFLUSH = 0x11 + ASI_LEON_IFLUSH = 0x10 + ASI_LEON_MMUFLUSH = 0x18 + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x400000 + EFD_NONBLOCK = 0x4000 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + EMT_TAGOVF = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x400000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x7 + F_GETLK64 = 0x7 + F_GETOWN = 0x5 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x8 + F_SETLK64 = 0x8 + F_SETLKW = 0x9 + F_SETLKW64 = 0x9 + F_SETOWN = 0x6 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x400000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x4000 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x200 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x100 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x100000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x2000 + O_EXCL = 0x800 + O_FSYNC = 0x802000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x4004 + O_NOATIME = 0x200000 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x4000 + O_PATH = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x802000 + O_SYNC = 0x802000 + O_TMPFILE = 0x2010000 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPAREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPREGS64 = 0x19 + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_READDATA = 0x10 + PTRACE_READTEXT = 0x12 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPAREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPREGS64 = 0x1a + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SPARC_DETACH = 0xb + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PTRACE_WRITEDATA = 0x11 + PTRACE_WRITETEXT = 0x13 + PT_FP = 0x48 + PT_G0 = 0x10 + PT_G1 = 0x14 + PT_G2 = 0x18 + PT_G3 = 0x1c + PT_G4 = 0x20 + PT_G5 = 0x24 + PT_G6 = 0x28 + PT_G7 = 0x2c + PT_I0 = 0x30 + PT_I1 = 0x34 + PT_I2 = 0x38 + PT_I3 = 0x3c + PT_I4 = 0x40 + PT_I5 = 0x44 + PT_I6 = 0x48 + PT_I7 = 0x4c + PT_NPC = 0x8 + PT_PC = 0x4 + PT_PSR = 0x0 + PT_REGS_MAGIC = 0x57ac6c00 + PT_TNPC = 0x90 + PT_TPC = 0x88 + PT_TSTATE = 0x80 + PT_V9_FP = 0x70 + PT_V9_G0 = 0x0 + PT_V9_G1 = 0x8 + PT_V9_G2 = 0x10 + PT_V9_G3 = 0x18 + PT_V9_G4 = 0x20 + PT_V9_G5 = 0x28 + PT_V9_G6 = 0x30 + PT_V9_G7 = 0x38 + PT_V9_I0 = 0x40 + PT_V9_I1 = 0x48 + PT_V9_I2 = 0x50 + PT_V9_I3 = 0x58 + PT_V9_I4 = 0x60 + PT_V9_I5 = 0x68 + PT_V9_I6 = 0x70 + PT_V9_I7 = 0x78 + PT_V9_MAGIC = 0x9c + PT_V9_TNPC = 0x90 + PT_V9_TPC = 0x88 + PT_V9_TSTATE = 0x80 + PT_V9_Y = 0x98 + PT_WIM = 0x10 + PT_Y = 0xc + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x6 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c + SCM_TIMESTAMPNS = 0x21 + SCM_TXTIME = 0x3f + SCM_WIFI_STATUS = 0x25 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x400000 + SFD_NONBLOCK = 0x4000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x400000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x4000 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x8000 + SO_ATTACH_BPF = 0x34 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x35 + SO_ATTACH_REUSEPORT_EBPF = 0x36 + SO_BINDTODEVICE = 0xd + SO_BPF_EXTENSIONS = 0x32 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0x400 + SO_BUSY_POLL = 0x30 + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x33 + SO_INCOMING_NAPI_ID = 0x3a + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x28 + SO_MARK = 0x22 + SO_MAX_PACING_RATE = 0x31 + SO_MEMINFO = 0x39 + SO_NOFCS = 0x27 + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x2 + SO_PASSSEC = 0x1f + SO_PEEK_OFF = 0x26 + SO_PEERCRED = 0x40 + SO_PEERGROUPS = 0x3d + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x100b + SO_RCVLOWAT = 0x800 + SO_RCVTIMEO = 0x2000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x24 + SO_SECURITY_AUTHENTICATION = 0x5001 + SO_SECURITY_ENCRYPTION_NETWORK = 0x5004 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002 + SO_SELECT_ERR_QUEUE = 0x29 + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x100a + SO_SNDLOWAT = 0x1000 + SO_SNDTIMEO = 0x4000 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPNS = 0x21 + SO_TXTIME = 0x3f + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x25 + SO_ZEROCOPY = 0x3e + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x20005407 + TCGETA = 0x40125401 + TCGETS = 0x40245408 + TCGETS2 = 0x402c540c + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x20005405 + TCSBRKP = 0x5425 + TCSETA = 0x80125402 + TCSETAF = 0x80125404 + TCSETAW = 0x80125403 + TCSETS = 0x80245409 + TCSETS2 = 0x802c540d + TCSETSF = 0x8024540b + TCSETSF2 = 0x802c540f + TCSETSW = 0x8024540a + TCSETSW2 = 0x802c540e + TCXONC = 0x20005406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x2000747a + TIOCCONS = 0x20007424 + TIOCEXCL = 0x2000740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x40047400 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285443 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x40047483 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40047486 + TIOCGPTPEER = 0x20007489 + TIOCGRS485 = 0x40205441 + TIOCGSERIAL = 0x541e + TIOCGSID = 0x40047485 + TIOCGSOFTCAR = 0x40047464 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x545c + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007484 + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSETD = 0x80047401 + TIOCSIG = 0x80047488 + TIOCSISO7816 = 0xc0285444 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x80047482 + TIOCSPTLCK = 0x80047487 + TIOCSRS485 = 0xc0205442 + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x80047465 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x20005437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 + __TIOCFLUSH = 0x80047410 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EADV = syscall.Errno(0x53) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x25) + EBADE = syscall.Errno(0x66) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x5d) + EBADMSG = syscall.Errno(0x4c) + EBADR = syscall.Errno(0x67) + EBADRQC = syscall.Errno(0x6a) + EBADSLT = syscall.Errno(0x6b) + EBFONT = syscall.Errno(0x6d) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x5e) + ECOMM = syscall.Errno(0x55) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0x4e) + EDEADLOCK = syscall.Errno(0x6c) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EHWPOISON = syscall.Errno(0x87) + EIDRM = syscall.Errno(0x4d) + EILSEQ = syscall.Errno(0x7a) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x81) + EKEYREJECTED = syscall.Errno(0x83) + EKEYREVOKED = syscall.Errno(0x82) + EL2HLT = syscall.Errno(0x65) + EL2NSYNC = syscall.Errno(0x5f) + EL3HLT = syscall.Errno(0x60) + EL3RST = syscall.Errno(0x61) + ELIBACC = syscall.Errno(0x72) + ELIBBAD = syscall.Errno(0x70) + ELIBEXEC = syscall.Errno(0x6e) + ELIBMAX = syscall.Errno(0x7b) + ELIBSCN = syscall.Errno(0x7c) + ELNRNG = syscall.Errno(0x62) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x7e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x57) + ENAMETOOLONG = syscall.Errno(0x3f) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x69) + ENOBUFS = syscall.Errno(0x37) + ENOCSI = syscall.Errno(0x64) + ENODATA = syscall.Errno(0x6f) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x80) + ENOLCK = syscall.Errno(0x4f) + ENOLINK = syscall.Errno(0x52) + ENOMEDIUM = syscall.Errno(0x7d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x4b) + ENONET = syscall.Errno(0x50) + ENOPKG = syscall.Errno(0x71) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x4a) + ENOSTR = syscall.Errno(0x48) + ENOSYS = syscall.Errno(0x5a) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x85) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x73) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x5c) + EOWNERDEAD = syscall.Errno(0x84) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROTO = syscall.Errno(0x56) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x59) + EREMOTE = syscall.Errno(0x47) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x74) + ERFKILL = syscall.Errno(0x86) + EROFS = syscall.Errno(0x1e) + ERREMOTE = syscall.Errno(0x51) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x54) + ESTALE = syscall.Errno(0x46) + ESTRPIPE = syscall.Errno(0x5b) + ETIME = syscall.Errno(0x49) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x63) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x68) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x1d) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "cannot assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "transport endpoint is already connected"}, + {57, "ENOTCONN", "transport endpoint is not connected"}, + {58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {59, "ETOOMANYREFS", "too many references: cannot splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale file handle"}, + {71, "EREMOTE", "object is remote"}, + {72, "ENOSTR", "device not a stream"}, + {73, "ETIME", "timer expired"}, + {74, "ENOSR", "out of streams resources"}, + {75, "ENOMSG", "no message of desired type"}, + {76, "EBADMSG", "bad message"}, + {77, "EIDRM", "identifier removed"}, + {78, "EDEADLK", "resource deadlock avoided"}, + {79, "ENOLCK", "no locks available"}, + {80, "ENONET", "machine is not on the network"}, + {81, "ERREMOTE", "unknown error 81"}, + {82, "ENOLINK", "link has been severed"}, + {83, "EADV", "advertise error"}, + {84, "ESRMNT", "srmount error"}, + {85, "ECOMM", "communication error on send"}, + {86, "EPROTO", "protocol error"}, + {87, "EMULTIHOP", "multihop attempted"}, + {88, "EDOTDOT", "RFS specific error"}, + {89, "EREMCHG", "remote address changed"}, + {90, "ENOSYS", "function not implemented"}, + {91, "ESTRPIPE", "streams pipe error"}, + {92, "EOVERFLOW", "value too large for defined data type"}, + {93, "EBADFD", "file descriptor in bad state"}, + {94, "ECHRNG", "channel number out of range"}, + {95, "EL2NSYNC", "level 2 not synchronized"}, + {96, "EL3HLT", "level 3 halted"}, + {97, "EL3RST", "level 3 reset"}, + {98, "ELNRNG", "link number out of range"}, + {99, "EUNATCH", "protocol driver not attached"}, + {100, "ENOCSI", "no CSI structure available"}, + {101, "EL2HLT", "level 2 halted"}, + {102, "EBADE", "invalid exchange"}, + {103, "EBADR", "invalid request descriptor"}, + {104, "EXFULL", "exchange full"}, + {105, "ENOANO", "no anode"}, + {106, "EBADRQC", "invalid request code"}, + {107, "EBADSLT", "invalid slot"}, + {108, "EDEADLOCK", "file locking deadlock error"}, + {109, "EBFONT", "bad font file format"}, + {110, "ELIBEXEC", "cannot exec a shared library directly"}, + {111, "ENODATA", "no data available"}, + {112, "ELIBBAD", "accessing a corrupted shared library"}, + {113, "ENOPKG", "package not installed"}, + {114, "ELIBACC", "can not access a needed shared library"}, + {115, "ENOTUNIQ", "name not unique on network"}, + {116, "ERESTART", "interrupted system call should be restarted"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {123, "ELIBMAX", "attempting to link in too many shared libraries"}, + {124, "ELIBSCN", ".lib section in a.out corrupted"}, + {125, "ENOMEDIUM", "no medium found"}, + {126, "EMEDIUMTYPE", "wrong medium type"}, + {127, "ECANCELED", "operation canceled"}, + {128, "ENOKEY", "required key not available"}, + {129, "EKEYEXPIRED", "key has expired"}, + {130, "EKEYREVOKED", "key has been revoked"}, + {131, "EKEYREJECTED", "key was rejected by service"}, + {132, "EOWNERDEAD", "owner died"}, + {133, "ENOTRECOVERABLE", "state not recoverable"}, + {134, "ERFKILL", "operation not possible due to RF-kill"}, + {135, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGLOST", "power failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go new file mode 100644 index 000000000..78cc04ea6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -0,0 +1,1772 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + EN_SW_CTL_INF = 0x1000 + EN_SW_CTL_PREC = 0x300 + EN_SW_CTL_ROUND = 0xc00 + EN_SW_DATACHAIN = 0x80 + EN_SW_DENORM = 0x2 + EN_SW_INVOP = 0x1 + EN_SW_OVERFLOW = 0x8 + EN_SW_PRECLOSS = 0x20 + EN_SW_UNDERFLOW = 0x10 + EN_SW_ZERODIV = 0x4 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go new file mode 100644 index 000000000..92185e693 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -0,0 +1,1762 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go new file mode 100644 index 000000000..373ad4543 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -0,0 +1,1751 @@ +// mkerrors.sh -marm +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -marm _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PRI_IOFLUSH = 0x7c + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x48087446 + TIOCPTSNAME = 0x48087448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go new file mode 100644 index 000000000..fb6c60441 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -0,0 +1,1762 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go new file mode 100644 index 000000000..d8be04518 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -0,0 +1,1654 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_COPY = 0x4 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x1ff7 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_MASK = 0x3ff000 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x10f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_SOURCE = 0x20000 + RTF_STATIC = 0x800 + RTF_TUNNEL = 0x100000 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go new file mode 100644 index 000000000..1f9e8a29e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -0,0 +1,1765 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x8 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x7ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0186950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MAXID = 0xc + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 000000000..79d5695c3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1656 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +// +build arm,openbsd + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x3ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x70f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go new file mode 100644 index 000000000..ec5f92de8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -0,0 +1,1789 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x8 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0186950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go new file mode 100644 index 000000000..22569db31 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -0,0 +1,1532 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_802 = 0x12 + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_FILE = 0x1 + AF_GOSIP = 0x16 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1a + AF_INET_OFFLOAD = 0x1e + AF_IPX = 0x17 + AF_KEY = 0x1b + AF_LAT = 0xe + AF_LINK = 0x19 + AF_LOCAL = 0x1 + AF_MAX = 0x20 + AF_NBS = 0x7 + AF_NCA = 0x1c + AF_NIT = 0x11 + AF_NS = 0x6 + AF_OSI = 0x13 + AF_OSINET = 0x15 + AF_PACKET = 0x20 + AF_POLICY = 0x1d + AF_PUP = 0x4 + AF_ROUTE = 0x18 + AF_SNA = 0xb + AF_TRILL = 0x1f + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_X25 = 0x14 + ARPHRD_ARCNET = 0x7 + ARPHRD_ATM = 0x10 + ARPHRD_AX25 = 0x3 + ARPHRD_CHAOS = 0x5 + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_FC = 0x12 + ARPHRD_FRAME = 0xf + ARPHRD_HDLC = 0x11 + ARPHRD_IB = 0x20 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IPATM = 0x13 + ARPHRD_METRICOM = 0x17 + ARPHRD_TUNNEL = 0x1f + B0 = 0x0 + B110 = 0x3 + B115200 = 0x12 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B153600 = 0x13 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B230400 = 0x14 + B2400 = 0xb + B300 = 0x7 + B307200 = 0x15 + B38400 = 0xf + B460800 = 0x16 + B4800 = 0xc + B50 = 0x1 + B57600 = 0x10 + B600 = 0x8 + B75 = 0x2 + B76800 = 0x11 + B921600 = 0x17 + B9600 = 0xd + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = -0x3fefbd89 + BIOCGDLTLIST32 = -0x3ff7bd89 + BIOCGETIF = 0x4020426b + BIOCGETLIF = 0x4078426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGRTIMEOUT32 = 0x4008427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = -0x7ffbbd90 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = -0x3ffbbd9a + BIOCSDLT = -0x7ffbbd8a + BIOCSETF = -0x7fefbd99 + BIOCSETF32 = -0x7ff7bd99 + BIOCSETIF = -0x7fdfbd94 + BIOCSETLIF = -0x7f87bd94 + BIOCSHDRCMPLT = -0x7ffbbd8b + BIOCSRTIMEOUT = -0x7fefbd86 + BIOCSRTIMEOUT32 = -0x7ff7bd86 + BIOCSSEESENT = -0x7ffbbd87 + BIOCSTCPF = -0x7fefbd8e + BIOCSUDPF = -0x7fefbd8d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_HIGHRES = 0x4 + CLOCK_LEVEL = 0xa + CLOCK_MONOTONIC = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x5 + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x3 + CLOCK_THREAD_CPUTIME_ID = 0x2 + CLOCK_VIRTUAL = 0x1 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + CSWTCH = 0x1a + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_BACNET_MS_TP = 0xa5 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FRELAY = 0x6b + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xa2 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_PPPD = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EMPTY_SET = 0x0 + EMT_CPCOVF = 0x1 + EQUALITY_CHECK = 0x0 + EXTA = 0xe + EXTB = 0xf + FD_CLOEXEC = 0x1 + FD_NFDBITS = 0x40 + FD_SETSIZE = 0x10000 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHALL = 0x1 + FLUSHDATA = 0x0 + FLUSHO = 0x2000 + F_ALLOCSP = 0xa + F_ALLOCSP64 = 0xa + F_BADFD = 0x2e + F_BLKSIZE = 0x13 + F_BLOCKS = 0x12 + F_CHKFL = 0x8 + F_COMPAT = 0x8 + F_DUP2FD = 0x9 + F_DUP2FD_CLOEXEC = 0x24 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x25 + F_FLOCK = 0x35 + F_FLOCK64 = 0x35 + F_FLOCKW = 0x36 + F_FLOCKW64 = 0x36 + F_FREESP = 0xb + F_FREESP64 = 0xb + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETXFL = 0x2d + F_HASREMOTELOCKS = 0x1a + F_ISSTREAM = 0xd + F_MANDDNY = 0x10 + F_MDACC = 0x20 + F_NODNY = 0x0 + F_NPRIV = 0x10 + F_OFD_GETLK = 0x2f + F_OFD_GETLK64 = 0x2f + F_OFD_SETLK = 0x30 + F_OFD_SETLK64 = 0x30 + F_OFD_SETLKW = 0x31 + F_OFD_SETLKW64 = 0x31 + F_PRIV = 0xf + F_QUOTACTL = 0x11 + F_RDACC = 0x1 + F_RDDNY = 0x1 + F_RDLCK = 0x1 + F_REVOKE = 0x19 + F_RMACC = 0x4 + F_RMDNY = 0x4 + F_RWACC = 0x3 + F_RWDNY = 0x3 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLK64_NBMAND = 0x2a + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETLK_NBMAND = 0x2a + F_SETOWN = 0x18 + F_SHARE = 0x28 + F_SHARE_NBMAND = 0x2b + F_UNLCK = 0x3 + F_UNLKSYS = 0x4 + F_UNSHARE = 0x29 + F_WRACC = 0x2 + F_WRDNY = 0x2 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFF_ADDRCONF = 0x80000 + IFF_ALLMULTI = 0x200 + IFF_ANYCAST = 0x400000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x7f203003b5a + IFF_COS_ENABLED = 0x200000000 + IFF_DEBUG = 0x4 + IFF_DEPRECATED = 0x40000 + IFF_DHCPRUNNING = 0x4000 + IFF_DUPLICATE = 0x4000000000 + IFF_FAILED = 0x10000000 + IFF_FIXEDMTU = 0x1000000000 + IFF_INACTIVE = 0x40000000 + IFF_INTELLIGENT = 0x400 + IFF_IPMP = 0x8000000000 + IFF_IPMP_CANTCHANGE = 0x10000000 + IFF_IPMP_INVALID = 0x1ec200080 + IFF_IPV4 = 0x1000000 + IFF_IPV6 = 0x2000000 + IFF_L3PROTECT = 0x40000000000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x800 + IFF_MULTI_BCAST = 0x1000 + IFF_NOACCEPT = 0x4000000 + IFF_NOARP = 0x80 + IFF_NOFAILOVER = 0x8000000 + IFF_NOLINKLOCAL = 0x20000000000 + IFF_NOLOCAL = 0x20000 + IFF_NONUD = 0x200000 + IFF_NORTEXCH = 0x800000 + IFF_NOTRAILERS = 0x20 + IFF_NOXMIT = 0x10000 + IFF_OFFLINE = 0x80000000 + IFF_POINTOPOINT = 0x10 + IFF_PREFERRED = 0x400000000 + IFF_PRIVATE = 0x8000 + IFF_PROMISC = 0x100 + IFF_ROUTER = 0x100000 + IFF_RUNNING = 0x40 + IFF_STANDBY = 0x20000000 + IFF_TEMPORARY = 0x800000000 + IFF_UNNUMBERED = 0x2000 + IFF_UP = 0x1 + IFF_VIRTUAL = 0x2000000000 + IFF_VRRP = 0x10000000000 + IFF_XRESOLV = 0x100000000 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6TO4 = 0xca + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_IPV4 = 0xc8 + IFT_IPV6 = 0xc9 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_AUTOCONF_MASK = 0xffff0000 + IN_AUTOCONF_NET = 0xa9fe0000 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_CLASSE_NET = 0xffffffff + IN_LOOPBACKNET = 0x7f + IN_PRIVATE12_MASK = 0xfff00000 + IN_PRIVATE12_NET = 0xac100000 + IN_PRIVATE16_MASK = 0xffff0000 + IN_PRIVATE16_NET = 0xc0a80000 + IN_PRIVATE8_MASK = 0xff000000 + IN_PRIVATE8_NET = 0xa000000 + IPPROTO_AH = 0x33 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x4 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_HELLO = 0x3f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_ND = 0x4d + IPPROTO_NONE = 0x3b + IPPROTO_OSPF = 0x59 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_UDP = 0x11 + IPV6_ADD_MEMBERSHIP = 0x9 + IPV6_BOUND_IF = 0x41 + IPV6_CHECKSUM = 0x18 + IPV6_DONTFRAG = 0x21 + IPV6_DROP_MEMBERSHIP = 0xa + IPV6_DSTOPTS = 0xf + IPV6_FLOWINFO_FLOWLABEL = 0xffff0f00 + IPV6_FLOWINFO_TCLASS = 0xf00f + IPV6_HOPLIMIT = 0xc + IPV6_HOPOPTS = 0xe + IPV6_JOIN_GROUP = 0x9 + IPV6_LEAVE_GROUP = 0xa + IPV6_MULTICAST_HOPS = 0x7 + IPV6_MULTICAST_IF = 0x6 + IPV6_MULTICAST_LOOP = 0x8 + IPV6_NEXTHOP = 0xd + IPV6_PAD1_OPT = 0x0 + IPV6_PATHMTU = 0x25 + IPV6_PKTINFO = 0xb + IPV6_PREFER_SRC_CGA = 0x20 + IPV6_PREFER_SRC_CGADEFAULT = 0x10 + IPV6_PREFER_SRC_CGAMASK = 0x30 + IPV6_PREFER_SRC_COA = 0x2 + IPV6_PREFER_SRC_DEFAULT = 0x15 + IPV6_PREFER_SRC_HOME = 0x1 + IPV6_PREFER_SRC_MASK = 0x3f + IPV6_PREFER_SRC_MIPDEFAULT = 0x1 + IPV6_PREFER_SRC_MIPMASK = 0x3 + IPV6_PREFER_SRC_NONCGA = 0x10 + IPV6_PREFER_SRC_PUBLIC = 0x4 + IPV6_PREFER_SRC_TMP = 0x8 + IPV6_PREFER_SRC_TMPDEFAULT = 0x4 + IPV6_PREFER_SRC_TMPMASK = 0xc + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x13 + IPV6_RECVHOPOPTS = 0x14 + IPV6_RECVPATHMTU = 0x24 + IPV6_RECVPKTINFO = 0x12 + IPV6_RECVRTHDR = 0x16 + IPV6_RECVRTHDRDSTOPTS = 0x17 + IPV6_RECVTCLASS = 0x19 + IPV6_RTHDR = 0x10 + IPV6_RTHDRDSTOPTS = 0x11 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SEC_OPT = 0x22 + IPV6_SRC_PREFERENCES = 0x23 + IPV6_TCLASS = 0x26 + IPV6_UNICAST_HOPS = 0x5 + IPV6_UNSPEC_SRC = 0x42 + IPV6_USE_MIN_MTU = 0x20 + IPV6_V6ONLY = 0x27 + IP_ADD_MEMBERSHIP = 0x13 + IP_ADD_SOURCE_MEMBERSHIP = 0x17 + IP_BLOCK_SOURCE = 0x15 + IP_BOUND_IF = 0x41 + IP_BROADCAST = 0x106 + IP_BROADCAST_TTL = 0x43 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPINIT_IF = 0x45 + IP_DONTFRAG = 0x1b + IP_DONTROUTE = 0x105 + IP_DROP_MEMBERSHIP = 0x14 + IP_DROP_SOURCE_MEMBERSHIP = 0x18 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x10 + IP_MULTICAST_LOOP = 0x12 + IP_MULTICAST_TTL = 0x11 + IP_NEXTHOP = 0x19 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x9 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVSLLA = 0xa + IP_RECVTTL = 0xb + IP_RETOPTS = 0x8 + IP_REUSEADDR = 0x104 + IP_SEC_OPT = 0x22 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x16 + IP_UNSPEC_SRC = 0x42 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_ACCESS_DEFAULT = 0x6 + MADV_ACCESS_LWP = 0x7 + MADV_ACCESS_MANY = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NORMAL = 0x0 + MADV_PURGE = 0x9 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80 + MAP_ALIGN = 0x200 + MAP_ANON = 0x100 + MAP_ANONYMOUS = 0x100 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_INITDATA = 0x800 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TEXT = 0x400 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CTRUNC = 0x10 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_DUPCTRL = 0x800 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 0x10 + MSG_NOTIFICATION = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x20 + MSG_WAITALL = 0x40 + MSG_XPG4_2 = 0x8000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_OLDSYNC = 0x0 + MS_SYNC = 0x4 + M_FLUSH = 0x86 + NAME_MAX = 0xff + NEWDEV = 0x1 + NL0 = 0x0 + NL1 = 0x100 + NLDLY = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + OLDDEV = 0x0 + ONBITSMAJOR = 0x7 + ONBITSMINOR = 0x8 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENFAIL = -0x1 + OPOST = 0x1 + O_ACCMODE = 0x600003 + O_APPEND = 0x8 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DSYNC = 0x40 + O_EXCL = 0x400 + O_EXEC = 0x400000 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x4 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NOLINKS = 0x40000 + O_NONBLOCK = 0x80 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x8000 + O_SEARCH = 0x200000 + O_SIOCGIFCONF = -0x3ff796ec + O_SIOCGLIFCONF = -0x3fef9688 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + O_XATTR = 0x4000 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x3 + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_NUMBITS = 0x9 + RTA_SRC = 0x100 + RTF_BLACKHOLE = 0x1000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INDIRECT = 0x40000 + RTF_KERNEL = 0x80000 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTIRT = 0x10000 + RTF_PRIVATE = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SETSRC = 0x20000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTF_ZONE = 0x100000 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0xf + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_FREEADDR = 0x10 + RTM_GET = 0x4 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_VERSION = 0x3 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_AWARE = 0x1 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_RIGHTS = 0x1010 + SCM_TIMESTAMP = 0x1013 + SCM_UCRED = 0x1012 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIG2STR_MAX = 0x20 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDRT = -0x7fcf8df6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fdb96e0 + SIOCDELMULTI = -0x7fdf96ce + SIOCDELRT = -0x7fcf8df5 + SIOCDXARP = -0x7fff9658 + SIOCGARP = -0x3fdb96e1 + SIOCGDSTINFO = -0x3fff965c + SIOCGENADDR = -0x3fdf96ab + SIOCGENPSTATS = -0x3fdf96c7 + SIOCGETLSGCNT = -0x3fef8deb + SIOCGETNAME = 0x40107334 + SIOCGETPEER = 0x40107335 + SIOCGETPROP = -0x3fff8f44 + SIOCGETSGCNT = -0x3feb8deb + SIOCGETSYNC = -0x3fdf96d3 + SIOCGETVIFCNT = -0x3feb8dec + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fdf96f3 + SIOCGIFBRDADDR = -0x3fdf96e9 + SIOCGIFCONF = -0x3ff796a4 + SIOCGIFDSTADDR = -0x3fdf96f1 + SIOCGIFFLAGS = -0x3fdf96ef + SIOCGIFHWADDR = -0x3fdf9647 + SIOCGIFINDEX = -0x3fdf96a6 + SIOCGIFMEM = -0x3fdf96ed + SIOCGIFMETRIC = -0x3fdf96e5 + SIOCGIFMTU = -0x3fdf96ea + SIOCGIFMUXID = -0x3fdf96a8 + SIOCGIFNETMASK = -0x3fdf96e7 + SIOCGIFNUM = 0x40046957 + SIOCGIP6ADDRPOLICY = -0x3fff965e + SIOCGIPMSFILTER = -0x3ffb964c + SIOCGLIFADDR = -0x3f87968f + SIOCGLIFBINDING = -0x3f879666 + SIOCGLIFBRDADDR = -0x3f879685 + SIOCGLIFCONF = -0x3fef965b + SIOCGLIFDADSTATE = -0x3f879642 + SIOCGLIFDSTADDR = -0x3f87968d + SIOCGLIFFLAGS = -0x3f87968b + SIOCGLIFGROUPINFO = -0x3f4b9663 + SIOCGLIFGROUPNAME = -0x3f879664 + SIOCGLIFHWADDR = -0x3f879640 + SIOCGLIFINDEX = -0x3f87967b + SIOCGLIFLNKINFO = -0x3f879674 + SIOCGLIFMETRIC = -0x3f879681 + SIOCGLIFMTU = -0x3f879686 + SIOCGLIFMUXID = -0x3f87967d + SIOCGLIFNETMASK = -0x3f879683 + SIOCGLIFNUM = -0x3ff3967e + SIOCGLIFSRCOF = -0x3fef964f + SIOCGLIFSUBNET = -0x3f879676 + SIOCGLIFTOKEN = -0x3f879678 + SIOCGLIFUSESRC = -0x3f879651 + SIOCGLIFZONE = -0x3f879656 + SIOCGLOWAT = 0x40047303 + SIOCGMSFILTER = -0x3ffb964e + SIOCGPGRP = 0x40047309 + SIOCGSTAMP = -0x3fef9646 + SIOCGXARP = -0x3fff9659 + SIOCIFDETACH = -0x7fdf96c8 + SIOCILB = -0x3ffb9645 + SIOCLIFADDIF = -0x3f879691 + SIOCLIFDELND = -0x7f879673 + SIOCLIFGETND = -0x3f879672 + SIOCLIFREMOVEIF = -0x7f879692 + SIOCLIFSETND = -0x7f879671 + SIOCLOWER = -0x7fdf96d7 + SIOCSARP = -0x7fdb96e2 + SIOCSCTPGOPT = -0x3fef9653 + SIOCSCTPPEELOFF = -0x3ffb9652 + SIOCSCTPSOPT = -0x7fef9654 + SIOCSENABLESDP = -0x3ffb9649 + SIOCSETPROP = -0x7ffb8f43 + SIOCSETSYNC = -0x7fdf96d4 + SIOCSHIWAT = -0x7ffb8d00 + SIOCSIFADDR = -0x7fdf96f4 + SIOCSIFBRDADDR = -0x7fdf96e8 + SIOCSIFDSTADDR = -0x7fdf96f2 + SIOCSIFFLAGS = -0x7fdf96f0 + SIOCSIFINDEX = -0x7fdf96a5 + SIOCSIFMEM = -0x7fdf96ee + SIOCSIFMETRIC = -0x7fdf96e4 + SIOCSIFMTU = -0x7fdf96eb + SIOCSIFMUXID = -0x7fdf96a7 + SIOCSIFNAME = -0x7fdf96b7 + SIOCSIFNETMASK = -0x7fdf96e6 + SIOCSIP6ADDRPOLICY = -0x7fff965d + SIOCSIPMSFILTER = -0x7ffb964b + SIOCSLGETREQ = -0x3fdf96b9 + SIOCSLIFADDR = -0x7f879690 + SIOCSLIFBRDADDR = -0x7f879684 + SIOCSLIFDSTADDR = -0x7f87968e + SIOCSLIFFLAGS = -0x7f87968c + SIOCSLIFGROUPNAME = -0x7f879665 + SIOCSLIFINDEX = -0x7f87967a + SIOCSLIFLNKINFO = -0x7f879675 + SIOCSLIFMETRIC = -0x7f879680 + SIOCSLIFMTU = -0x7f879687 + SIOCSLIFMUXID = -0x7f87967c + SIOCSLIFNAME = -0x3f87967f + SIOCSLIFNETMASK = -0x7f879682 + SIOCSLIFPREFIX = -0x3f879641 + SIOCSLIFSUBNET = -0x7f879677 + SIOCSLIFTOKEN = -0x7f879679 + SIOCSLIFUSESRC = -0x7f879650 + SIOCSLIFZONE = -0x7f879655 + SIOCSLOWAT = -0x7ffb8cfe + SIOCSLSTAT = -0x7fdf96b8 + SIOCSMSFILTER = -0x7ffb964d + SIOCSPGRP = -0x7ffb8cf8 + SIOCSPROMISC = -0x7ffb96d0 + SIOCSQPTR = -0x3ffb9648 + SIOCSSDSTATS = -0x3fdf96d2 + SIOCSSESTATS = -0x3fdf96d1 + SIOCSXARP = -0x7fff965a + SIOCTMYADDR = -0x3ff79670 + SIOCTMYSITE = -0x3ff7966e + SIOCTONLINK = -0x3ff7966f + SIOCUPPER = -0x7fdf96d8 + SIOCX25RCV = -0x3fdf96c4 + SIOCX25TBL = -0x3fdf96c3 + SIOCX25XMT = -0x3fdf96c5 + SIOCXPROTO = 0x20007337 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NDELAY = 0x200000 + SOCK_NONBLOCK = 0x100000 + SOCK_RAW = 0x4 + SOCK_RDM = 0x5 + SOCK_SEQPACKET = 0x6 + SOCK_STREAM = 0x2 + SOCK_TYPE_MASK = 0xffff + SOL_FILTER = 0xfffc + SOL_PACKET = 0xfffd + SOL_ROUTE = 0xfffe + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ALL = 0x3f + SO_ALLZONES = 0x1014 + SO_ANON_MLP = 0x100a + SO_ATTACH_FILTER = 0x40000001 + SO_BAND = 0x4000 + SO_BROADCAST = 0x20 + SO_COPYOPT = 0x80000 + SO_DEBUG = 0x1 + SO_DELIM = 0x8000 + SO_DETACH_FILTER = 0x40000002 + SO_DGRAM_ERRIND = 0x200 + SO_DOMAIN = 0x100c + SO_DONTLINGER = -0x81 + SO_DONTROUTE = 0x10 + SO_ERROPT = 0x40000 + SO_ERROR = 0x1007 + SO_EXCLBIND = 0x1015 + SO_HIWAT = 0x10 + SO_ISNTTY = 0x800 + SO_ISTTY = 0x400 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOWAT = 0x20 + SO_MAC_EXEMPT = 0x100b + SO_MAC_IMPLICIT = 0x1016 + SO_MAXBLK = 0x100000 + SO_MAXPSZ = 0x8 + SO_MINPSZ = 0x4 + SO_MREADOFF = 0x80 + SO_MREADON = 0x40 + SO_NDELOFF = 0x200 + SO_NDELON = 0x100 + SO_NODELIM = 0x10000 + SO_OOBINLINE = 0x100 + SO_PROTOTYPE = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVPSH = 0x100d + SO_RCVTIMEO = 0x1006 + SO_READOPT = 0x1 + SO_RECVUCRED = 0x400 + SO_REUSEADDR = 0x4 + SO_SECATTR = 0x1011 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STRHOLD = 0x20000 + SO_TAIL = 0x200000 + SO_TIMESTAMP = 0x1013 + SO_TONSTOP = 0x2000 + SO_TOSTOP = 0x1000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_VRRP = 0x1017 + SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_ABORT_THRESHOLD = 0x11 + TCP_ANONPRIVBIND = 0x20 + TCP_CONN_ABORT_THRESHOLD = 0x13 + TCP_CONN_NOTIFY_THRESHOLD = 0x12 + TCP_CORK = 0x18 + TCP_EXCLBIND = 0x21 + TCP_INIT_CWND = 0x15 + TCP_KEEPALIVE = 0x8 + TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17 + TCP_KEEPALIVE_THRESHOLD = 0x16 + TCP_KEEPCNT = 0x23 + TCP_KEEPIDLE = 0x22 + TCP_KEEPINTVL = 0x24 + TCP_LINGER2 = 0x1c + TCP_MAXSEG = 0x2 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOTIFY_THRESHOLD = 0x10 + TCP_RECVDSTADDR = 0x14 + TCP_RTO_INITIAL = 0x19 + TCP_RTO_MAX = 0x1b + TCP_RTO_MIN = 0x1a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETSF = 0x5410 + TCSETSW = 0x540f + TCXONC = 0x5406 + TIOC = 0x5400 + TIOCCBRK = 0x747a + TIOCCDTR = 0x7478 + TIOCCILOOP = 0x746c + TIOCEXCL = 0x740d + TIOCFLUSH = 0x7410 + TIOCGETC = 0x7412 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x7414 + TIOCGPPS = 0x547d + TIOCGPPSEV = 0x547f + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5469 + TIOCGWINSZ = 0x5468 + TIOCHPCL = 0x7402 + TIOCKBOF = 0x5409 + TIOCKBON = 0x5408 + TIOCLBIC = 0x747e + TIOCLBIS = 0x747f + TIOCLGET = 0x747c + TIOCLSET = 0x747d + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMSET = 0x741a + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x7471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7473 + TIOCREMOTE = 0x741e + TIOCSBRK = 0x747b + TIOCSCTTY = 0x7484 + TIOCSDTR = 0x7479 + TIOCSETC = 0x7411 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIGNAL = 0x741f + TIOCSILOOP = 0x746d + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x7415 + TIOCSPPS = 0x547e + TIOCSSOFTCAR = 0x546a + TIOCSTART = 0x746e + TIOCSTI = 0x7417 + TIOCSTOP = 0x746f + TIOCSWINSZ = 0x5467 + TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCEOF = 0x8 + VCEOL = 0x9 + VDISCARD = 0xd + VDSUSP = 0xb + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VERASE2 = 0x11 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTATUS = 0x10 + VSTOP = 0x9 + VSUSP = 0xa + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WCONTFLG = 0xffff + WCONTINUED = 0x8 + WCOREFLG = 0x80 + WEXITED = 0x1 + WNOHANG = 0x40 + WNOWAIT = 0x80 + WOPTMASK = 0xcf + WRAP = 0x20000 + WSIGMASK = 0x7f + WSTOPFLG = 0x7f + WSTOPPED = 0x4 + WTRAPPED = 0x2 + WUNTRACED = 0x4 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x39) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x2f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x31) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOCKUNMAPPED = syscall.Errno(0x48) + ELOOP = syscall.Errno(0x5a) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTACTIVE = syscall.Errno(0x49) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTRECOVERABLE = syscall.Errno(0x3b) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x30) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0x3a) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMOTE = syscall.Errno(0x42) + ERESTART = syscall.Errno(0x5b) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCANCEL = syscall.Signal(0x24) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGFREEZE = syscall.Signal(0x22) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x29) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGJVM1 = syscall.Signal(0x27) + SIGJVM2 = syscall.Signal(0x28) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x25) + SIGLWP = syscall.Signal(0x21) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHAW = syscall.Signal(0x23) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWAITING = syscall.Signal(0x20) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) + SIGXRES = syscall.Signal(0x26) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock situation detected/avoided"}, + {46, "ENOLCK", "no record locks available"}, + {47, "ECANCELED", "operation canceled"}, + {48, "ENOTSUP", "operation not supported"}, + {49, "EDQUOT", "disc quota exceeded"}, + {50, "EBADE", "bad exchange descriptor"}, + {51, "EBADR", "bad request descriptor"}, + {52, "EXFULL", "message tables full"}, + {53, "ENOANO", "anode table overflow"}, + {54, "EBADRQC", "bad request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock"}, + {57, "EBFONT", "bad font file format"}, + {58, "EOWNERDEAD", "owner of the lock died"}, + {59, "ENOTRECOVERABLE", "lock is not recoverable"}, + {60, "ENOSTR", "not a stream device"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of stream resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "ELOCKUNMAPPED", "locked lock was unmapped "}, + {73, "ENOTACTIVE", "facility is not active"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "not a data message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"}, + {87, "ELIBEXEC", "can not exec a shared library directly"}, + {88, "EILSEQ", "illegal byte sequence"}, + {89, "ENOSYS", "operation not applicable"}, + {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"}, + {91, "ERESTART", "error 91"}, + {92, "ESTRPIPE", "error 92"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "option not supported by protocol"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "EOPNOTSUPP", "operation not supported on transport endpoint"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection because of reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {143, "ESHUTDOWN", "cannot send after socket shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale NFS file handle"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal Instruction"}, + {5, "SIGTRAP", "trace/Breakpoint Trap"}, + {6, "SIGABRT", "abort"}, + {7, "SIGEMT", "emulation Trap"}, + {8, "SIGFPE", "arithmetic Exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus Error"}, + {11, "SIGSEGV", "segmentation Fault"}, + {12, "SIGSYS", "bad System Call"}, + {13, "SIGPIPE", "broken Pipe"}, + {14, "SIGALRM", "alarm Clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user Signal 1"}, + {17, "SIGUSR2", "user Signal 2"}, + {18, "SIGCHLD", "child Status Changed"}, + {19, "SIGPWR", "power-Fail/Restart"}, + {20, "SIGWINCH", "window Size Change"}, + {21, "SIGURG", "urgent Socket Condition"}, + {22, "SIGIO", "pollable Event"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped (user)"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual Timer Expired"}, + {29, "SIGPROF", "profiling Timer Expired"}, + {30, "SIGXCPU", "cpu Limit Exceeded"}, + {31, "SIGXFSZ", "file Size Limit Exceeded"}, + {32, "SIGWAITING", "no runnable lwp"}, + {33, "SIGLWP", "inter-lwp signal"}, + {34, "SIGFREEZE", "checkpoint Freeze"}, + {35, "SIGTHAW", "checkpoint Thaw"}, + {36, "SIGCANCEL", "thread Cancellation"}, + {37, "SIGLOST", "resource Lost"}, + {38, "SIGXRES", "resource Control Exceeded"}, + {39, "SIGJVM1", "reserved for JVM 1"}, + {40, "SIGJVM2", "reserved for JVM 2"}, + {41, "SIGINFO", "information Request"}, +} diff --git a/vendor/golang.org/x/sys/unix/zptrace386_linux.go b/vendor/golang.org/x/sys/unix/zptrace386_linux.go new file mode 100644 index 000000000..2d21c49e1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptrace386_linux.go @@ -0,0 +1,80 @@ +// Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT. + +// +build linux +// +build 386 amd64 + +package unix + +import "unsafe" + +// PtraceRegs386 is the registers used by 386 binaries. +type PtraceRegs386 struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +// PtraceGetRegs386 fetches the registers used by 386 binaries. +func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegs386 sets the registers used by 386 binaries. +func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsAmd64 is the registers used by amd64 binaries. +type PtraceRegsAmd64 struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. +func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsAmd64 sets the registers used by amd64 binaries. +func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracearm_linux.go b/vendor/golang.org/x/sys/unix/zptracearm_linux.go new file mode 100644 index 000000000..faf23bbed --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracearm_linux.go @@ -0,0 +1,41 @@ +// Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT. + +// +build linux +// +build arm arm64 + +package unix + +import "unsafe" + +// PtraceRegsArm is the registers used by arm binaries. +type PtraceRegsArm struct { + Uregs [18]uint32 +} + +// PtraceGetRegsArm fetches the registers used by arm binaries. +func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm sets the registers used by arm binaries. +func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsArm64 is the registers used by arm64 binaries. +type PtraceRegsArm64 struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +// PtraceGetRegsArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm64 sets the registers used by arm64 binaries. +func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemips_linux.go b/vendor/golang.org/x/sys/unix/zptracemips_linux.go new file mode 100644 index 000000000..c431131e6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemips_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT. + +// +build linux +// +build mips mips64 + +package unix + +import "unsafe" + +// PtraceRegsMips is the registers used by mips binaries. +type PtraceRegsMips struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips fetches the registers used by mips binaries. +func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips sets the registers used by mips binaries. +func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64 is the registers used by mips64 binaries. +type PtraceRegsMips64 struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64 fetches the registers used by mips64 binaries. +func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64 sets the registers used by mips64 binaries. +func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go new file mode 100644 index 000000000..dc3d6d373 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT. + +// +build linux +// +build mipsle mips64le + +package unix + +import "unsafe" + +// PtraceRegsMipsle is the registers used by mipsle binaries. +type PtraceRegsMipsle struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMipsle fetches the registers used by mipsle binaries. +func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMipsle sets the registers used by mipsle binaries. +func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64le is the registers used by mips64le binaries. +type PtraceRegsMips64le struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64le fetches the registers used by mips64le binaries. +func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64le sets the registers used by mips64le binaries. +func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 000000000..4a9e99a0e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1484 @@ +// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc + +package unix + +/* +#include +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); +int getrlimit64(int, uintptr_t); +int setrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := C.getsystemcfg(C.int(label)) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(target))) + r0, er := C.umount(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 000000000..c3371ddc2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1442 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage))) + wpid = Pid_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, e1 := callioctl(fd, int(req), arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, e1 := callfcntl(fd, cmd, uintptr(arg)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + _, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callacct(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchdir(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchroot(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, e1 := callclose(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, e1 := calldup(oldfd) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + callexit(code) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, e1 := callfchdir(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, e1 := callfchmod(fd, mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, e1 := callfdatasync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, e1 := callfsync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e1 := callgetpgid(pid) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := callgetpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := callgetpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := callgetppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, e1 := callgetpriority(which, who) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e1 := callgetsid(pid) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, e1 := callkill(pid, int(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, e1 := callsetpgid(pid, pgid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e1 := callsetsid() + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, e1 := callsetuid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, e1 := callsetgid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, e1 := callsetpriority(which, who, prio) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + callsync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, e1 := calltimes(uintptr(unsafe.Pointer(tms))) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := callumask(mask) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, e1 := calluname(uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlink(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, e1 := calldup2(oldfd, newfd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, e1 := callposix_fadvise64(fd, offset, length, advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, e1 := callfchown(fd, uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, e1 := callftruncate(fd, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := callgetegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := callgeteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := callgetgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := callgetuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, e1 := calllisten(s, n) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, e1 := callpause() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, e1 := callsetregid(rgid, egid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, e1 := callsetreuid(ruid, euid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, e1 := callshutdown(fd, how) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callbind(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callconnect(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list))) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e1 := callsetsockopt(s, level, name, uintptr(val), vallen) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e1 := callsocket(domain, typ, proto) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, e1 := callmunmap(addr, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, e1 := callmlockall(flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, e1 := callmunlockall() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, e1 := callpipe(uintptr(unsafe.Pointer(p))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + _, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, e1 := calltime(uintptr(unsafe.Pointer(t))) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, e1 := callumount(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, e1 := calllseek(fd, offset, whence) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, e1 := callmmap64(addr, length, prot, flags, fd, offset) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go new file mode 100644 index 000000000..4eda72323 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -0,0 +1,1192 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 +// +build !gccgo + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fsync fsync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_select select "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nsendmsg nsendmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o" + +//go:linkname libc_utimes libc_utimes +//go:linkname libc_utimensat libc_utimensat +//go:linkname libc_getcwd libc_getcwd +//go:linkname libc_accept libc_accept +//go:linkname libc_getdirent libc_getdirent +//go:linkname libc_wait4 libc_wait4 +//go:linkname libc_ioctl libc_ioctl +//go:linkname libc_fcntl libc_fcntl +//go:linkname libc_acct libc_acct +//go:linkname libc_chdir libc_chdir +//go:linkname libc_chroot libc_chroot +//go:linkname libc_close libc_close +//go:linkname libc_dup libc_dup +//go:linkname libc_exit libc_exit +//go:linkname libc_faccessat libc_faccessat +//go:linkname libc_fchdir libc_fchdir +//go:linkname libc_fchmod libc_fchmod +//go:linkname libc_fchmodat libc_fchmodat +//go:linkname libc_fchownat libc_fchownat +//go:linkname libc_fdatasync libc_fdatasync +//go:linkname libc_fsync libc_fsync +//go:linkname libc_getpgid libc_getpgid +//go:linkname libc_getpgrp libc_getpgrp +//go:linkname libc_getpid libc_getpid +//go:linkname libc_getppid libc_getppid +//go:linkname libc_getpriority libc_getpriority +//go:linkname libc_getrusage libc_getrusage +//go:linkname libc_getsid libc_getsid +//go:linkname libc_kill libc_kill +//go:linkname libc_syslog libc_syslog +//go:linkname libc_mkdir libc_mkdir +//go:linkname libc_mkdirat libc_mkdirat +//go:linkname libc_mkfifo libc_mkfifo +//go:linkname libc_mknod libc_mknod +//go:linkname libc_mknodat libc_mknodat +//go:linkname libc_nanosleep libc_nanosleep +//go:linkname libc_open64 libc_open64 +//go:linkname libc_openat libc_openat +//go:linkname libc_read libc_read +//go:linkname libc_readlink libc_readlink +//go:linkname libc_renameat libc_renameat +//go:linkname libc_setdomainname libc_setdomainname +//go:linkname libc_sethostname libc_sethostname +//go:linkname libc_setpgid libc_setpgid +//go:linkname libc_setsid libc_setsid +//go:linkname libc_settimeofday libc_settimeofday +//go:linkname libc_setuid libc_setuid +//go:linkname libc_setgid libc_setgid +//go:linkname libc_setpriority libc_setpriority +//go:linkname libc_statx libc_statx +//go:linkname libc_sync libc_sync +//go:linkname libc_times libc_times +//go:linkname libc_umask libc_umask +//go:linkname libc_uname libc_uname +//go:linkname libc_unlink libc_unlink +//go:linkname libc_unlinkat libc_unlinkat +//go:linkname libc_ustat libc_ustat +//go:linkname libc_write libc_write +//go:linkname libc_dup2 libc_dup2 +//go:linkname libc_posix_fadvise64 libc_posix_fadvise64 +//go:linkname libc_fchown libc_fchown +//go:linkname libc_fstat libc_fstat +//go:linkname libc_fstatat libc_fstatat +//go:linkname libc_fstatfs libc_fstatfs +//go:linkname libc_ftruncate libc_ftruncate +//go:linkname libc_getegid libc_getegid +//go:linkname libc_geteuid libc_geteuid +//go:linkname libc_getgid libc_getgid +//go:linkname libc_getuid libc_getuid +//go:linkname libc_lchown libc_lchown +//go:linkname libc_listen libc_listen +//go:linkname libc_lstat libc_lstat +//go:linkname libc_pause libc_pause +//go:linkname libc_pread64 libc_pread64 +//go:linkname libc_pwrite64 libc_pwrite64 +//go:linkname libc_select libc_select +//go:linkname libc_pselect libc_pselect +//go:linkname libc_setregid libc_setregid +//go:linkname libc_setreuid libc_setreuid +//go:linkname libc_shutdown libc_shutdown +//go:linkname libc_splice libc_splice +//go:linkname libc_stat libc_stat +//go:linkname libc_statfs libc_statfs +//go:linkname libc_truncate libc_truncate +//go:linkname libc_bind libc_bind +//go:linkname libc_connect libc_connect +//go:linkname libc_getgroups libc_getgroups +//go:linkname libc_setgroups libc_setgroups +//go:linkname libc_getsockopt libc_getsockopt +//go:linkname libc_setsockopt libc_setsockopt +//go:linkname libc_socket libc_socket +//go:linkname libc_socketpair libc_socketpair +//go:linkname libc_getpeername libc_getpeername +//go:linkname libc_getsockname libc_getsockname +//go:linkname libc_recvfrom libc_recvfrom +//go:linkname libc_sendto libc_sendto +//go:linkname libc_nrecvmsg libc_nrecvmsg +//go:linkname libc_nsendmsg libc_nsendmsg +//go:linkname libc_munmap libc_munmap +//go:linkname libc_madvise libc_madvise +//go:linkname libc_mprotect libc_mprotect +//go:linkname libc_mlock libc_mlock +//go:linkname libc_mlockall libc_mlockall +//go:linkname libc_msync libc_msync +//go:linkname libc_munlock libc_munlock +//go:linkname libc_munlockall libc_munlockall +//go:linkname libc_pipe libc_pipe +//go:linkname libc_poll libc_poll +//go:linkname libc_gettimeofday libc_gettimeofday +//go:linkname libc_time libc_time +//go:linkname libc_utime libc_utime +//go:linkname libc_getsystemcfg libc_getsystemcfg +//go:linkname libc_umount libc_umount +//go:linkname libc_getrlimit libc_getrlimit +//go:linkname libc_setrlimit libc_setrlimit +//go:linkname libc_lseek libc_lseek +//go:linkname libc_mmap64 libc_mmap64 + +type syscallFunc uintptr + +var ( + libc_utimes, + libc_utimensat, + libc_getcwd, + libc_accept, + libc_getdirent, + libc_wait4, + libc_ioctl, + libc_fcntl, + libc_acct, + libc_chdir, + libc_chroot, + libc_close, + libc_dup, + libc_exit, + libc_faccessat, + libc_fchdir, + libc_fchmod, + libc_fchmodat, + libc_fchownat, + libc_fdatasync, + libc_fsync, + libc_getpgid, + libc_getpgrp, + libc_getpid, + libc_getppid, + libc_getpriority, + libc_getrusage, + libc_getsid, + libc_kill, + libc_syslog, + libc_mkdir, + libc_mkdirat, + libc_mkfifo, + libc_mknod, + libc_mknodat, + libc_nanosleep, + libc_open64, + libc_openat, + libc_read, + libc_readlink, + libc_renameat, + libc_setdomainname, + libc_sethostname, + libc_setpgid, + libc_setsid, + libc_settimeofday, + libc_setuid, + libc_setgid, + libc_setpriority, + libc_statx, + libc_sync, + libc_times, + libc_umask, + libc_uname, + libc_unlink, + libc_unlinkat, + libc_ustat, + libc_write, + libc_dup2, + libc_posix_fadvise64, + libc_fchown, + libc_fstat, + libc_fstatat, + libc_fstatfs, + libc_ftruncate, + libc_getegid, + libc_geteuid, + libc_getgid, + libc_getuid, + libc_lchown, + libc_listen, + libc_lstat, + libc_pause, + libc_pread64, + libc_pwrite64, + libc_select, + libc_pselect, + libc_setregid, + libc_setreuid, + libc_shutdown, + libc_splice, + libc_stat, + libc_statfs, + libc_truncate, + libc_bind, + libc_connect, + libc_getgroups, + libc_setgroups, + libc_getsockopt, + libc_setsockopt, + libc_socket, + libc_socketpair, + libc_getpeername, + libc_getsockname, + libc_recvfrom, + libc_sendto, + libc_nrecvmsg, + libc_nsendmsg, + libc_munmap, + libc_madvise, + libc_mprotect, + libc_mlock, + libc_mlockall, + libc_msync, + libc_munlock, + libc_munlockall, + libc_pipe, + libc_poll, + libc_gettimeofday, + libc_time, + libc_utime, + libc_getsystemcfg, + libc_umount, + libc_getrlimit, + libc_setrlimit, + libc_lseek, + libc_mmap64 syscallFunc +) + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go new file mode 100644 index 000000000..e5c4cbdd6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -0,0 +1,1070 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 +// +build gccgo + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); +int getrlimit(int, uintptr_t); +int setrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.acct(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chdir(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chroot(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.close(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup(C.int(oldfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.exit(C.int(code))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchdir(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fdatasync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fsync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgrp()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getppid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpriority(C.int(which), C.int(who))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.kill(C.int(pid), C.int(sig))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.settimeofday(C.uintptr_t(tv))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setuid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sync()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.times(C.uintptr_t(tms))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umask(C.int(mask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.uname(C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlink(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getegid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.geteuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.listen(C.int(s), C.int(n))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pause()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setregid(C.int(rgid), C.int(egid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.shutdown(C.int(fd), C.int(how))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlockall(C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlockall()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pipe(C.uintptr_t(p))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.time(C.uintptr_t(t))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsystemcfg(C.int(label))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umount(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go new file mode 100644 index 000000000..c4ec7ff87 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -0,0 +1,1810 @@ +// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go new file mode 100644 index 000000000..23346dc68 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -0,0 +1,2505 @@ +// go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat64_trampoline() + +//go:linkname libc_fstat64 libc_fstat64 +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat64_trampoline() + +//go:linkname libc_fstatat64 libc_fstatat64 +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs64_trampoline() + +//go:linkname libc_fstatfs64 libc_fstatfs64 +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___getdirentries64_trampoline() + +//go:linkname libc___getdirentries64 libc___getdirentries64 +//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat64_trampoline() + +//go:linkname libc_getfsstat64 libc_getfsstat64 +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat64_trampoline() + +//go:linkname libc_lstat64 libc_lstat64 +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat64_trampoline() + +//go:linkname libc_stat64 libc_stat64 +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs64_trampoline() + +//go:linkname libc_statfs64 libc_statfs64 +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s new file mode 100644 index 000000000..37b85b4f6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s @@ -0,0 +1,284 @@ +// go run mkasm_darwin.go 386 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 + JMP libc___getdirentries64(SB) +TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go new file mode 100644 index 000000000..2581e8960 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go @@ -0,0 +1,1810 @@ +// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go new file mode 100644 index 000000000..c142e33e9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -0,0 +1,2520 @@ +// go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat64_trampoline() + +//go:linkname libc_fstat64 libc_fstat64 +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat64_trampoline() + +//go:linkname libc_fstatat64 libc_fstatat64 +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs64_trampoline() + +//go:linkname libc_fstatfs64 libc_fstatfs64 +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___getdirentries64_trampoline() + +//go:linkname libc___getdirentries64 libc___getdirentries64 +//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat64_trampoline() + +//go:linkname libc_getfsstat64 libc_getfsstat64 +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat64_trampoline() + +//go:linkname libc_lstat64 libc_lstat64 +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat64_trampoline() + +//go:linkname libc_stat64 libc_stat64 +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs64_trampoline() + +//go:linkname libc_statfs64 libc_statfs64 +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s new file mode 100644 index 000000000..1a3915197 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -0,0 +1,286 @@ +// go run mkasm_darwin.go amd64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 + JMP libc___getdirentries64(SB) +TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go new file mode 100644 index 000000000..f8caecef0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go @@ -0,0 +1,1793 @@ +// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go new file mode 100644 index 000000000..01cffbf46 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -0,0 +1,2483 @@ +// go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat_trampoline() + +//go:linkname libc_fstat libc_fstat +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat_trampoline() + +//go:linkname libc_fstatat libc_fstatat +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs_trampoline() + +//go:linkname libc_fstatfs libc_fstatfs +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat_trampoline() + +//go:linkname libc_getfsstat libc_getfsstat +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat_trampoline() + +//go:linkname libc_lstat libc_lstat +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat_trampoline() + +//go:linkname libc_stat libc_stat +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs_trampoline() + +//go:linkname libc_statfs libc_statfs +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s new file mode 100644 index 000000000..994056f35 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s @@ -0,0 +1,282 @@ +// go run mkasm_darwin.go arm +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go new file mode 100644 index 000000000..3fd0f3c85 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go @@ -0,0 +1,1793 @@ +// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go new file mode 100644 index 000000000..8f2691dee --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -0,0 +1,2483 @@ +// go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat_trampoline() + +//go:linkname libc_fstat libc_fstat +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat_trampoline() + +//go:linkname libc_fstatat libc_fstatat +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs_trampoline() + +//go:linkname libc_fstatfs libc_fstatfs +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat_trampoline() + +//go:linkname libc_getfsstat libc_getfsstat +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat_trampoline() + +//go:linkname libc_lstat libc_lstat +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat_trampoline() + +//go:linkname libc_stat libc_stat +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs_trampoline() + +//go:linkname libc_statfs libc_statfs +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s new file mode 100644 index 000000000..61dc0d4c1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -0,0 +1,282 @@ +// go run mkasm_darwin.go arm64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go new file mode 100644 index 000000000..ae9f1a21e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -0,0 +1,1659 @@ +// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build dragonfly,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go new file mode 100644 index 000000000..80903e47b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go new file mode 100644 index 000000000..cd250ff0e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go new file mode 100644 index 000000000..290a9c2cb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go new file mode 100644 index 000000000..c6df9d2e8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -tags freebsd,arm64 -- syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go new file mode 100644 index 000000000..feb3c0393 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -0,0 +1,2246 @@ +// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go new file mode 100644 index 000000000..fa0cb252a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -0,0 +1,2413 @@ +// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func inotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go new file mode 100644 index 000000000..daec1d5d2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -0,0 +1,2368 @@ +// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go new file mode 100644 index 000000000..ad9820b59 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -0,0 +1,2270 @@ +// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go new file mode 100644 index 000000000..c82ce7d29 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -0,0 +1,2426 @@ +// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go new file mode 100644 index 000000000..d1b77c193 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -0,0 +1,2397 @@ +// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go new file mode 100644 index 000000000..b8e45f98c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -0,0 +1,2397 @@ +// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go new file mode 100644 index 000000000..e26c748d4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -0,0 +1,2426 @@ +// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go new file mode 100644 index 000000000..0a958ca0b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -0,0 +1,2475 @@ +// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go new file mode 100644 index 000000000..658f361e7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -0,0 +1,2475 @@ +// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,ppc64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go new file mode 100644 index 000000000..daff30039 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -0,0 +1,2250 @@ +// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go new file mode 100644 index 000000000..caf6ea866 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -0,0 +1,2245 @@ +// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,s390x + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go new file mode 100644 index 000000000..369a04b57 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -0,0 +1,2408 @@ +// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,sparc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go new file mode 100644 index 000000000..642db7670 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go new file mode 100644 index 000000000..59585fee3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go new file mode 100644 index 000000000..6ec31434b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go new file mode 100644 index 000000000..603d14433 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go new file mode 100644 index 000000000..6a489fac0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go new file mode 100644 index 000000000..30cba4347 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 000000000..fa1beda33 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go new file mode 100644 index 000000000..eb5899046 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go new file mode 100644 index 000000000..5f614760c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -0,0 +1,1953 @@ +// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build solaris,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_pipe pipe "libc.so" +//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" +//go:cgo_import_dynamic libc_gethostname gethostname "libc.so" +//go:cgo_import_dynamic libc_utimes utimes "libc.so" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" +//go:cgo_import_dynamic libc_futimesat futimesat "libc.so" +//go:cgo_import_dynamic libc_accept accept "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" +//go:cgo_import_dynamic libc_acct acct "libc.so" +//go:cgo_import_dynamic libc___makedev __makedev "libc.so" +//go:cgo_import_dynamic libc___major __major "libc.so" +//go:cgo_import_dynamic libc___minor __minor "libc.so" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:cgo_import_dynamic libc_poll poll "libc.so" +//go:cgo_import_dynamic libc_access access "libc.so" +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" +//go:cgo_import_dynamic libc_chdir chdir "libc.so" +//go:cgo_import_dynamic libc_chmod chmod "libc.so" +//go:cgo_import_dynamic libc_chown chown "libc.so" +//go:cgo_import_dynamic libc_chroot chroot "libc.so" +//go:cgo_import_dynamic libc_close close "libc.so" +//go:cgo_import_dynamic libc_creat creat "libc.so" +//go:cgo_import_dynamic libc_dup dup "libc.so" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" +//go:cgo_import_dynamic libc_exit exit "libc.so" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" +//go:cgo_import_dynamic libc_fchown fchown "libc.so" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so" +//go:cgo_import_dynamic libc_flock flock "libc.so" +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" +//go:cgo_import_dynamic libc_fstat fstat "libc.so" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" +//go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so" +//go:cgo_import_dynamic libc_getdents getdents "libc.so" +//go:cgo_import_dynamic libc_getgid getgid "libc.so" +//go:cgo_import_dynamic libc_getpid getpid "libc.so" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" +//go:cgo_import_dynamic libc_getegid getegid "libc.so" +//go:cgo_import_dynamic libc_getppid getppid "libc.so" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" +//go:cgo_import_dynamic libc_getuid getuid "libc.so" +//go:cgo_import_dynamic libc_kill kill "libc.so" +//go:cgo_import_dynamic libc_lchown lchown "libc.so" +//go:cgo_import_dynamic libc_link link "libc.so" +//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so" +//go:cgo_import_dynamic libc_lstat lstat "libc.so" +//go:cgo_import_dynamic libc_madvise madvise "libc.so" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" +//go:cgo_import_dynamic libc_mknod mknod "libc.so" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" +//go:cgo_import_dynamic libc_mlock mlock "libc.so" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" +//go:cgo_import_dynamic libc_msync msync "libc.so" +//go:cgo_import_dynamic libc_munlock munlock "libc.so" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" +//go:cgo_import_dynamic libc_open open "libc.so" +//go:cgo_import_dynamic libc_openat openat "libc.so" +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" +//go:cgo_import_dynamic libc_pause pause "libc.so" +//go:cgo_import_dynamic libc_pread pread "libc.so" +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" +//go:cgo_import_dynamic libc_read read "libc.so" +//go:cgo_import_dynamic libc_readlink readlink "libc.so" +//go:cgo_import_dynamic libc_rename rename "libc.so" +//go:cgo_import_dynamic libc_renameat renameat "libc.so" +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" +//go:cgo_import_dynamic libc_lseek lseek "libc.so" +//go:cgo_import_dynamic libc_select select "libc.so" +//go:cgo_import_dynamic libc_setegid setegid "libc.so" +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" +//go:cgo_import_dynamic libc_setgid setgid "libc.so" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.so" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" +//go:cgo_import_dynamic libc_setregid setregid "libc.so" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" +//go:cgo_import_dynamic libc_setsid setsid "libc.so" +//go:cgo_import_dynamic libc_setuid setuid "libc.so" +//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" +//go:cgo_import_dynamic libc_stat stat "libc.so" +//go:cgo_import_dynamic libc_statvfs statvfs "libc.so" +//go:cgo_import_dynamic libc_symlink symlink "libc.so" +//go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_times times "libc.so" +//go:cgo_import_dynamic libc_truncate truncate "libc.so" +//go:cgo_import_dynamic libc_fsync fsync "libc.so" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" +//go:cgo_import_dynamic libc_umask umask "libc.so" +//go:cgo_import_dynamic libc_uname uname "libc.so" +//go:cgo_import_dynamic libc_umount umount "libc.so" +//go:cgo_import_dynamic libc_unlink unlink "libc.so" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" +//go:cgo_import_dynamic libc_ustat ustat "libc.so" +//go:cgo_import_dynamic libc_utime utime "libc.so" +//go:cgo_import_dynamic libc___xnet_bind __xnet_bind "libsocket.so" +//go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so" +//go:cgo_import_dynamic libc_mmap mmap "libc.so" +//go:cgo_import_dynamic libc_munmap munmap "libc.so" +//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so" +//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so" +//go:cgo_import_dynamic libc_write write "libc.so" +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" + +//go:linkname procpipe libc_pipe +//go:linkname procgetsockname libc_getsockname +//go:linkname procGetcwd libc_getcwd +//go:linkname procgetgroups libc_getgroups +//go:linkname procsetgroups libc_setgroups +//go:linkname procwait4 libc_wait4 +//go:linkname procgethostname libc_gethostname +//go:linkname procutimes libc_utimes +//go:linkname procutimensat libc_utimensat +//go:linkname procfcntl libc_fcntl +//go:linkname procfutimesat libc_futimesat +//go:linkname procaccept libc_accept +//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg +//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg +//go:linkname procacct libc_acct +//go:linkname proc__makedev libc___makedev +//go:linkname proc__major libc___major +//go:linkname proc__minor libc___minor +//go:linkname procioctl libc_ioctl +//go:linkname procpoll libc_poll +//go:linkname procAccess libc_access +//go:linkname procAdjtime libc_adjtime +//go:linkname procChdir libc_chdir +//go:linkname procChmod libc_chmod +//go:linkname procChown libc_chown +//go:linkname procChroot libc_chroot +//go:linkname procClose libc_close +//go:linkname procCreat libc_creat +//go:linkname procDup libc_dup +//go:linkname procDup2 libc_dup2 +//go:linkname procExit libc_exit +//go:linkname procFaccessat libc_faccessat +//go:linkname procFchdir libc_fchdir +//go:linkname procFchmod libc_fchmod +//go:linkname procFchmodat libc_fchmodat +//go:linkname procFchown libc_fchown +//go:linkname procFchownat libc_fchownat +//go:linkname procFdatasync libc_fdatasync +//go:linkname procFlock libc_flock +//go:linkname procFpathconf libc_fpathconf +//go:linkname procFstat libc_fstat +//go:linkname procFstatat libc_fstatat +//go:linkname procFstatvfs libc_fstatvfs +//go:linkname procGetdents libc_getdents +//go:linkname procGetgid libc_getgid +//go:linkname procGetpid libc_getpid +//go:linkname procGetpgid libc_getpgid +//go:linkname procGetpgrp libc_getpgrp +//go:linkname procGeteuid libc_geteuid +//go:linkname procGetegid libc_getegid +//go:linkname procGetppid libc_getppid +//go:linkname procGetpriority libc_getpriority +//go:linkname procGetrlimit libc_getrlimit +//go:linkname procGetrusage libc_getrusage +//go:linkname procGettimeofday libc_gettimeofday +//go:linkname procGetuid libc_getuid +//go:linkname procKill libc_kill +//go:linkname procLchown libc_lchown +//go:linkname procLink libc_link +//go:linkname proc__xnet_llisten libc___xnet_llisten +//go:linkname procLstat libc_lstat +//go:linkname procMadvise libc_madvise +//go:linkname procMkdir libc_mkdir +//go:linkname procMkdirat libc_mkdirat +//go:linkname procMkfifo libc_mkfifo +//go:linkname procMkfifoat libc_mkfifoat +//go:linkname procMknod libc_mknod +//go:linkname procMknodat libc_mknodat +//go:linkname procMlock libc_mlock +//go:linkname procMlockall libc_mlockall +//go:linkname procMprotect libc_mprotect +//go:linkname procMsync libc_msync +//go:linkname procMunlock libc_munlock +//go:linkname procMunlockall libc_munlockall +//go:linkname procNanosleep libc_nanosleep +//go:linkname procOpen libc_open +//go:linkname procOpenat libc_openat +//go:linkname procPathconf libc_pathconf +//go:linkname procPause libc_pause +//go:linkname procPread libc_pread +//go:linkname procPwrite libc_pwrite +//go:linkname procread libc_read +//go:linkname procReadlink libc_readlink +//go:linkname procRename libc_rename +//go:linkname procRenameat libc_renameat +//go:linkname procRmdir libc_rmdir +//go:linkname proclseek libc_lseek +//go:linkname procSelect libc_select +//go:linkname procSetegid libc_setegid +//go:linkname procSeteuid libc_seteuid +//go:linkname procSetgid libc_setgid +//go:linkname procSethostname libc_sethostname +//go:linkname procSetpgid libc_setpgid +//go:linkname procSetpriority libc_setpriority +//go:linkname procSetregid libc_setregid +//go:linkname procSetreuid libc_setreuid +//go:linkname procSetrlimit libc_setrlimit +//go:linkname procSetsid libc_setsid +//go:linkname procSetuid libc_setuid +//go:linkname procshutdown libc_shutdown +//go:linkname procStat libc_stat +//go:linkname procStatvfs libc_statvfs +//go:linkname procSymlink libc_symlink +//go:linkname procSync libc_sync +//go:linkname procTimes libc_times +//go:linkname procTruncate libc_truncate +//go:linkname procFsync libc_fsync +//go:linkname procFtruncate libc_ftruncate +//go:linkname procUmask libc_umask +//go:linkname procUname libc_uname +//go:linkname procumount libc_umount +//go:linkname procUnlink libc_unlink +//go:linkname procUnlinkat libc_unlinkat +//go:linkname procUstat libc_ustat +//go:linkname procUtime libc_utime +//go:linkname proc__xnet_bind libc___xnet_bind +//go:linkname proc__xnet_connect libc___xnet_connect +//go:linkname procmmap libc_mmap +//go:linkname procmunmap libc_munmap +//go:linkname procsendfile libc_sendfile +//go:linkname proc__xnet_sendto libc___xnet_sendto +//go:linkname proc__xnet_socket libc___xnet_socket +//go:linkname proc__xnet_socketpair libc___xnet_socketpair +//go:linkname procwrite libc_write +//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt +//go:linkname procgetpeername libc_getpeername +//go:linkname procsetsockopt libc_setsockopt +//go:linkname procrecvfrom libc_recvfrom + +var ( + procpipe, + procgetsockname, + procGetcwd, + procgetgroups, + procsetgroups, + procwait4, + procgethostname, + procutimes, + procutimensat, + procfcntl, + procfutimesat, + procaccept, + proc__xnet_recvmsg, + proc__xnet_sendmsg, + procacct, + proc__makedev, + proc__major, + proc__minor, + procioctl, + procpoll, + procAccess, + procAdjtime, + procChdir, + procChmod, + procChown, + procChroot, + procClose, + procCreat, + procDup, + procDup2, + procExit, + procFaccessat, + procFchdir, + procFchmod, + procFchmodat, + procFchown, + procFchownat, + procFdatasync, + procFlock, + procFpathconf, + procFstat, + procFstatat, + procFstatvfs, + procGetdents, + procGetgid, + procGetpid, + procGetpgid, + procGetpgrp, + procGeteuid, + procGetegid, + procGetppid, + procGetpriority, + procGetrlimit, + procGetrusage, + procGettimeofday, + procGetuid, + procKill, + procLchown, + procLink, + proc__xnet_llisten, + procLstat, + procMadvise, + procMkdir, + procMkdirat, + procMkfifo, + procMkfifoat, + procMknod, + procMknodat, + procMlock, + procMlockall, + procMprotect, + procMsync, + procMunlock, + procMunlockall, + procNanosleep, + procOpen, + procOpenat, + procPathconf, + procPause, + procPread, + procPwrite, + procread, + procReadlink, + procRename, + procRenameat, + procRmdir, + proclseek, + procSelect, + procSetegid, + procSeteuid, + procSetgid, + procSethostname, + procSetpgid, + procSetpriority, + procSetregid, + procSetreuid, + procSetrlimit, + procSetsid, + procSetuid, + procshutdown, + procStat, + procStatvfs, + procSymlink, + procSync, + procTimes, + procTruncate, + procFsync, + procFtruncate, + procUmask, + procUname, + procumount, + procUnlink, + procUnlinkat, + procUstat, + procUtime, + proc__xnet_bind, + proc__xnet_connect, + procmmap, + procmunmap, + procsendfile, + proc__xnet_sendto, + proc__xnet_socket, + proc__xnet_socketpair, + procwrite, + proc__xnet_getsockopt, + procgetpeername, + procsetsockopt, + procrecvfrom syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int32(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gethostname(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func acct(path *byte) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __makedev(version int, major uint, minor uint) (val uint64) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0) + val = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __major(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __minor(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) + nfd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs(path string, vfsstat *Statvfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go new file mode 100644 index 000000000..37dcc74c2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -0,0 +1,272 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +// +build 386,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go new file mode 100644 index 000000000..fe6caa6eb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -0,0 +1,270 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.dnsjackport", []_C_int{1, 13}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go new file mode 100644 index 000000000..6eb8c0b08 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -0,0 +1,272 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +// +build arm,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go new file mode 100644 index 000000000..ba4304fd2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -0,0 +1,275 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go new file mode 100644 index 000000000..f33614532 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go new file mode 100644 index 000000000..654dd3da3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -0,0 +1,438 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_KQUEUE_WORKLOOP_CTL = 530 + SYS___MACH_BRIDGE_REMOTE_TIME = 531 + SYS_MAXSYSCALL = 532 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go new file mode 100644 index 000000000..103a72ed1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go new file mode 100644 index 000000000..7ab2130b9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go new file mode 100644 index 000000000..464c9a983 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -0,0 +1,315 @@ +// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void exit(int rval); } + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); } + SYS_ACCESS = 33 // { int access(char *path, int flags); } + SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { pid_t vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(int from, int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); } + SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); } + SYS_UNAME = 164 // { int uname(struct utsname *name); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int + SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); } + SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); } + SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); } + SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); } + SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); } + SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); } + SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); } + SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); } + SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); } + SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); } + SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); } + SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); } + SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); } + SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_CLOSEFROM = 474 // { int closefrom(int fd); } + SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); } + SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); } + SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); } + SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); } + SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); } + SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); } + SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); } + SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); } + SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, struct trapframe *tframe, struct vextframe *vframe); } + SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); } + SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, size_t len); } + SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); } + SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); } + SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); } + SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); } + SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); } + SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sigmask); } + SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); } + SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); } + SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); } + SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, struct statvfs *vbuf, long vbufsize, int flags); } + SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); } + SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, struct stat *sb, int flags); } + SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, int flags); } + SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); } + SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); } + SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, int flags); } + SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); } + SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); } + SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); } + SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); } + SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); } + SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); } + SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); } + SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); } + SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); } + SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); } + SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); } + SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_SWAPOFF = 529 // { int swapoff(char *name); } + SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, struct plistref *pref); } + SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); } + SYS_EACCESS = 532 // { int eaccess(char *path, int flags); } + SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); } + SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); } + SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); } + SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); } + SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);} + SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); } + SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); } + SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); } + SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); } + SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); } + SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); } + SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); } + SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); } + SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go new file mode 100644 index 000000000..55c3a3294 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go new file mode 100644 index 000000000..b39be6cb8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go new file mode 100644 index 000000000..44ffd4ce5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go new file mode 100644 index 000000000..9f21e9550 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -0,0 +1,395 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, \ + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, \ + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go new file mode 100644 index 000000000..8d17873de --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -0,0 +1,392 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go new file mode 100644 index 000000000..b3d8ad79d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -0,0 +1,344 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +package unix + +const ( + SYS_READ = 0 + SYS_WRITE = 1 + SYS_OPEN = 2 + SYS_CLOSE = 3 + SYS_STAT = 4 + SYS_FSTAT = 5 + SYS_LSTAT = 6 + SYS_POLL = 7 + SYS_LSEEK = 8 + SYS_MMAP = 9 + SYS_MPROTECT = 10 + SYS_MUNMAP = 11 + SYS_BRK = 12 + SYS_RT_SIGACTION = 13 + SYS_RT_SIGPROCMASK = 14 + SYS_RT_SIGRETURN = 15 + SYS_IOCTL = 16 + SYS_PREAD64 = 17 + SYS_PWRITE64 = 18 + SYS_READV = 19 + SYS_WRITEV = 20 + SYS_ACCESS = 21 + SYS_PIPE = 22 + SYS_SELECT = 23 + SYS_SCHED_YIELD = 24 + SYS_MREMAP = 25 + SYS_MSYNC = 26 + SYS_MINCORE = 27 + SYS_MADVISE = 28 + SYS_SHMGET = 29 + SYS_SHMAT = 30 + SYS_SHMCTL = 31 + SYS_DUP = 32 + SYS_DUP2 = 33 + SYS_PAUSE = 34 + SYS_NANOSLEEP = 35 + SYS_GETITIMER = 36 + SYS_ALARM = 37 + SYS_SETITIMER = 38 + SYS_GETPID = 39 + SYS_SENDFILE = 40 + SYS_SOCKET = 41 + SYS_CONNECT = 42 + SYS_ACCEPT = 43 + SYS_SENDTO = 44 + SYS_RECVFROM = 45 + SYS_SENDMSG = 46 + SYS_RECVMSG = 47 + SYS_SHUTDOWN = 48 + SYS_BIND = 49 + SYS_LISTEN = 50 + SYS_GETSOCKNAME = 51 + SYS_GETPEERNAME = 52 + SYS_SOCKETPAIR = 53 + SYS_SETSOCKOPT = 54 + SYS_GETSOCKOPT = 55 + SYS_CLONE = 56 + SYS_FORK = 57 + SYS_VFORK = 58 + SYS_EXECVE = 59 + SYS_EXIT = 60 + SYS_WAIT4 = 61 + SYS_KILL = 62 + SYS_UNAME = 63 + SYS_SEMGET = 64 + SYS_SEMOP = 65 + SYS_SEMCTL = 66 + SYS_SHMDT = 67 + SYS_MSGGET = 68 + SYS_MSGSND = 69 + SYS_MSGRCV = 70 + SYS_MSGCTL = 71 + SYS_FCNTL = 72 + SYS_FLOCK = 73 + SYS_FSYNC = 74 + SYS_FDATASYNC = 75 + SYS_TRUNCATE = 76 + SYS_FTRUNCATE = 77 + SYS_GETDENTS = 78 + SYS_GETCWD = 79 + SYS_CHDIR = 80 + SYS_FCHDIR = 81 + SYS_RENAME = 82 + SYS_MKDIR = 83 + SYS_RMDIR = 84 + SYS_CREAT = 85 + SYS_LINK = 86 + SYS_UNLINK = 87 + SYS_SYMLINK = 88 + SYS_READLINK = 89 + SYS_CHMOD = 90 + SYS_FCHMOD = 91 + SYS_CHOWN = 92 + SYS_FCHOWN = 93 + SYS_LCHOWN = 94 + SYS_UMASK = 95 + SYS_GETTIMEOFDAY = 96 + SYS_GETRLIMIT = 97 + SYS_GETRUSAGE = 98 + SYS_SYSINFO = 99 + SYS_TIMES = 100 + SYS_PTRACE = 101 + SYS_GETUID = 102 + SYS_SYSLOG = 103 + SYS_GETGID = 104 + SYS_SETUID = 105 + SYS_SETGID = 106 + SYS_GETEUID = 107 + SYS_GETEGID = 108 + SYS_SETPGID = 109 + SYS_GETPPID = 110 + SYS_GETPGRP = 111 + SYS_SETSID = 112 + SYS_SETREUID = 113 + SYS_SETREGID = 114 + SYS_GETGROUPS = 115 + SYS_SETGROUPS = 116 + SYS_SETRESUID = 117 + SYS_GETRESUID = 118 + SYS_SETRESGID = 119 + SYS_GETRESGID = 120 + SYS_GETPGID = 121 + SYS_SETFSUID = 122 + SYS_SETFSGID = 123 + SYS_GETSID = 124 + SYS_CAPGET = 125 + SYS_CAPSET = 126 + SYS_RT_SIGPENDING = 127 + SYS_RT_SIGTIMEDWAIT = 128 + SYS_RT_SIGQUEUEINFO = 129 + SYS_RT_SIGSUSPEND = 130 + SYS_SIGALTSTACK = 131 + SYS_UTIME = 132 + SYS_MKNOD = 133 + SYS_USELIB = 134 + SYS_PERSONALITY = 135 + SYS_USTAT = 136 + SYS_STATFS = 137 + SYS_FSTATFS = 138 + SYS_SYSFS = 139 + SYS_GETPRIORITY = 140 + SYS_SETPRIORITY = 141 + SYS_SCHED_SETPARAM = 142 + SYS_SCHED_GETPARAM = 143 + SYS_SCHED_SETSCHEDULER = 144 + SYS_SCHED_GETSCHEDULER = 145 + SYS_SCHED_GET_PRIORITY_MAX = 146 + SYS_SCHED_GET_PRIORITY_MIN = 147 + SYS_SCHED_RR_GET_INTERVAL = 148 + SYS_MLOCK = 149 + SYS_MUNLOCK = 150 + SYS_MLOCKALL = 151 + SYS_MUNLOCKALL = 152 + SYS_VHANGUP = 153 + SYS_MODIFY_LDT = 154 + SYS_PIVOT_ROOT = 155 + SYS__SYSCTL = 156 + SYS_PRCTL = 157 + SYS_ARCH_PRCTL = 158 + SYS_ADJTIMEX = 159 + SYS_SETRLIMIT = 160 + SYS_CHROOT = 161 + SYS_SYNC = 162 + SYS_ACCT = 163 + SYS_SETTIMEOFDAY = 164 + SYS_MOUNT = 165 + SYS_UMOUNT2 = 166 + SYS_SWAPON = 167 + SYS_SWAPOFF = 168 + SYS_REBOOT = 169 + SYS_SETHOSTNAME = 170 + SYS_SETDOMAINNAME = 171 + SYS_IOPL = 172 + SYS_IOPERM = 173 + SYS_CREATE_MODULE = 174 + SYS_INIT_MODULE = 175 + SYS_DELETE_MODULE = 176 + SYS_GET_KERNEL_SYMS = 177 + SYS_QUERY_MODULE = 178 + SYS_QUOTACTL = 179 + SYS_NFSSERVCTL = 180 + SYS_GETPMSG = 181 + SYS_PUTPMSG = 182 + SYS_AFS_SYSCALL = 183 + SYS_TUXCALL = 184 + SYS_SECURITY = 185 + SYS_GETTID = 186 + SYS_READAHEAD = 187 + SYS_SETXATTR = 188 + SYS_LSETXATTR = 189 + SYS_FSETXATTR = 190 + SYS_GETXATTR = 191 + SYS_LGETXATTR = 192 + SYS_FGETXATTR = 193 + SYS_LISTXATTR = 194 + SYS_LLISTXATTR = 195 + SYS_FLISTXATTR = 196 + SYS_REMOVEXATTR = 197 + SYS_LREMOVEXATTR = 198 + SYS_FREMOVEXATTR = 199 + SYS_TKILL = 200 + SYS_TIME = 201 + SYS_FUTEX = 202 + SYS_SCHED_SETAFFINITY = 203 + SYS_SCHED_GETAFFINITY = 204 + SYS_SET_THREAD_AREA = 205 + SYS_IO_SETUP = 206 + SYS_IO_DESTROY = 207 + SYS_IO_GETEVENTS = 208 + SYS_IO_SUBMIT = 209 + SYS_IO_CANCEL = 210 + SYS_GET_THREAD_AREA = 211 + SYS_LOOKUP_DCOOKIE = 212 + SYS_EPOLL_CREATE = 213 + SYS_EPOLL_CTL_OLD = 214 + SYS_EPOLL_WAIT_OLD = 215 + SYS_REMAP_FILE_PAGES = 216 + SYS_GETDENTS64 = 217 + SYS_SET_TID_ADDRESS = 218 + SYS_RESTART_SYSCALL = 219 + SYS_SEMTIMEDOP = 220 + SYS_FADVISE64 = 221 + SYS_TIMER_CREATE = 222 + SYS_TIMER_SETTIME = 223 + SYS_TIMER_GETTIME = 224 + SYS_TIMER_GETOVERRUN = 225 + SYS_TIMER_DELETE = 226 + SYS_CLOCK_SETTIME = 227 + SYS_CLOCK_GETTIME = 228 + SYS_CLOCK_GETRES = 229 + SYS_CLOCK_NANOSLEEP = 230 + SYS_EXIT_GROUP = 231 + SYS_EPOLL_WAIT = 232 + SYS_EPOLL_CTL = 233 + SYS_TGKILL = 234 + SYS_UTIMES = 235 + SYS_VSERVER = 236 + SYS_MBIND = 237 + SYS_SET_MEMPOLICY = 238 + SYS_GET_MEMPOLICY = 239 + SYS_MQ_OPEN = 240 + SYS_MQ_UNLINK = 241 + SYS_MQ_TIMEDSEND = 242 + SYS_MQ_TIMEDRECEIVE = 243 + SYS_MQ_NOTIFY = 244 + SYS_MQ_GETSETATTR = 245 + SYS_KEXEC_LOAD = 246 + SYS_WAITID = 247 + SYS_ADD_KEY = 248 + SYS_REQUEST_KEY = 249 + SYS_KEYCTL = 250 + SYS_IOPRIO_SET = 251 + SYS_IOPRIO_GET = 252 + SYS_INOTIFY_INIT = 253 + SYS_INOTIFY_ADD_WATCH = 254 + SYS_INOTIFY_RM_WATCH = 255 + SYS_MIGRATE_PAGES = 256 + SYS_OPENAT = 257 + SYS_MKDIRAT = 258 + SYS_MKNODAT = 259 + SYS_FCHOWNAT = 260 + SYS_FUTIMESAT = 261 + SYS_NEWFSTATAT = 262 + SYS_UNLINKAT = 263 + SYS_RENAMEAT = 264 + SYS_LINKAT = 265 + SYS_SYMLINKAT = 266 + SYS_READLINKAT = 267 + SYS_FCHMODAT = 268 + SYS_FACCESSAT = 269 + SYS_PSELECT6 = 270 + SYS_PPOLL = 271 + SYS_UNSHARE = 272 + SYS_SET_ROBUST_LIST = 273 + SYS_GET_ROBUST_LIST = 274 + SYS_SPLICE = 275 + SYS_TEE = 276 + SYS_SYNC_FILE_RANGE = 277 + SYS_VMSPLICE = 278 + SYS_MOVE_PAGES = 279 + SYS_UTIMENSAT = 280 + SYS_EPOLL_PWAIT = 281 + SYS_SIGNALFD = 282 + SYS_TIMERFD_CREATE = 283 + SYS_EVENTFD = 284 + SYS_FALLOCATE = 285 + SYS_TIMERFD_SETTIME = 286 + SYS_TIMERFD_GETTIME = 287 + SYS_ACCEPT4 = 288 + SYS_SIGNALFD4 = 289 + SYS_EVENTFD2 = 290 + SYS_EPOLL_CREATE1 = 291 + SYS_DUP3 = 292 + SYS_PIPE2 = 293 + SYS_INOTIFY_INIT1 = 294 + SYS_PREADV = 295 + SYS_PWRITEV = 296 + SYS_RT_TGSIGQUEUEINFO = 297 + SYS_PERF_EVENT_OPEN = 298 + SYS_RECVMMSG = 299 + SYS_FANOTIFY_INIT = 300 + SYS_FANOTIFY_MARK = 301 + SYS_PRLIMIT64 = 302 + SYS_NAME_TO_HANDLE_AT = 303 + SYS_OPEN_BY_HANDLE_AT = 304 + SYS_CLOCK_ADJTIME = 305 + SYS_SYNCFS = 306 + SYS_SENDMMSG = 307 + SYS_SETNS = 308 + SYS_GETCPU = 309 + SYS_PROCESS_VM_READV = 310 + SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 + SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go new file mode 100644 index 000000000..e092822fb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -0,0 +1,364 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go new file mode 100644 index 000000000..b81d508a7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -0,0 +1,289 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_RENAMEAT = 38 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go new file mode 100644 index 000000000..6893a5bd0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -0,0 +1,377 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go new file mode 100644 index 000000000..40164cacd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go new file mode 100644 index 000000000..8a909738b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go new file mode 100644 index 000000000..8d7818422 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -0,0 +1,377 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go new file mode 100644 index 000000000..ec5bde3d5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -0,0 +1,375 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go new file mode 100644 index 000000000..bdbabdbcd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -0,0 +1,375 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go new file mode 100644 index 000000000..2c8c46a2f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -0,0 +1,288 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go new file mode 100644 index 000000000..6eb7c257f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +package unix + +const ( + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_RESTART_SYSCALL = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SIGNAL = 48 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_LOOKUP_DCOOKIE = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_GETDENTS = 141 + SYS_SELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_GETRLIMIT = 191 + SYS_LCHOWN = 198 + SYS_GETUID = 199 + SYS_GETGID = 200 + SYS_GETEUID = 201 + SYS_GETEGID = 202 + SYS_SETREUID = 203 + SYS_SETREGID = 204 + SYS_GETGROUPS = 205 + SYS_SETGROUPS = 206 + SYS_FCHOWN = 207 + SYS_SETRESUID = 208 + SYS_GETRESUID = 209 + SYS_SETRESGID = 210 + SYS_GETRESGID = 211 + SYS_CHOWN = 212 + SYS_SETUID = 213 + SYS_SETGID = 214 + SYS_SETFSUID = 215 + SYS_SETFSGID = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_READAHEAD = 222 + SYS_SETXATTR = 224 + SYS_LSETXATTR = 225 + SYS_FSETXATTR = 226 + SYS_GETXATTR = 227 + SYS_LGETXATTR = 228 + SYS_FGETXATTR = 229 + SYS_LISTXATTR = 230 + SYS_LLISTXATTR = 231 + SYS_FLISTXATTR = 232 + SYS_REMOVEXATTR = 233 + SYS_LREMOVEXATTR = 234 + SYS_FREMOVEXATTR = 235 + SYS_GETTID = 236 + SYS_TKILL = 237 + SYS_FUTEX = 238 + SYS_SCHED_SETAFFINITY = 239 + SYS_SCHED_GETAFFINITY = 240 + SYS_TGKILL = 241 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_EPOLL_CREATE = 249 + SYS_EPOLL_CTL = 250 + SYS_EPOLL_WAIT = 251 + SYS_SET_TID_ADDRESS = 252 + SYS_FADVISE64 = 253 + SYS_TIMER_CREATE = 254 + SYS_TIMER_SETTIME = 255 + SYS_TIMER_GETTIME = 256 + SYS_TIMER_GETOVERRUN = 257 + SYS_TIMER_DELETE = 258 + SYS_CLOCK_SETTIME = 259 + SYS_CLOCK_GETTIME = 260 + SYS_CLOCK_GETRES = 261 + SYS_CLOCK_NANOSLEEP = 262 + SYS_STATFS64 = 265 + SYS_FSTATFS64 = 266 + SYS_REMAP_FILE_PAGES = 267 + SYS_MBIND = 268 + SYS_GET_MEMPOLICY = 269 + SYS_SET_MEMPOLICY = 270 + SYS_MQ_OPEN = 271 + SYS_MQ_UNLINK = 272 + SYS_MQ_TIMEDSEND = 273 + SYS_MQ_TIMEDRECEIVE = 274 + SYS_MQ_NOTIFY = 275 + SYS_MQ_GETSETATTR = 276 + SYS_KEXEC_LOAD = 277 + SYS_ADD_KEY = 278 + SYS_REQUEST_KEY = 279 + SYS_KEYCTL = 280 + SYS_WAITID = 281 + SYS_IOPRIO_SET = 282 + SYS_IOPRIO_GET = 283 + SYS_INOTIFY_INIT = 284 + SYS_INOTIFY_ADD_WATCH = 285 + SYS_INOTIFY_RM_WATCH = 286 + SYS_MIGRATE_PAGES = 287 + SYS_OPENAT = 288 + SYS_MKDIRAT = 289 + SYS_MKNODAT = 290 + SYS_FCHOWNAT = 291 + SYS_FUTIMESAT = 292 + SYS_NEWFSTATAT = 293 + SYS_UNLINKAT = 294 + SYS_RENAMEAT = 295 + SYS_LINKAT = 296 + SYS_SYMLINKAT = 297 + SYS_READLINKAT = 298 + SYS_FCHMODAT = 299 + SYS_FACCESSAT = 300 + SYS_PSELECT6 = 301 + SYS_PPOLL = 302 + SYS_UNSHARE = 303 + SYS_SET_ROBUST_LIST = 304 + SYS_GET_ROBUST_LIST = 305 + SYS_SPLICE = 306 + SYS_SYNC_FILE_RANGE = 307 + SYS_TEE = 308 + SYS_VMSPLICE = 309 + SYS_MOVE_PAGES = 310 + SYS_GETCPU = 311 + SYS_EPOLL_PWAIT = 312 + SYS_UTIMES = 313 + SYS_FALLOCATE = 314 + SYS_UTIMENSAT = 315 + SYS_SIGNALFD = 316 + SYS_TIMERFD = 317 + SYS_EVENTFD = 318 + SYS_TIMERFD_CREATE = 319 + SYS_TIMERFD_SETTIME = 320 + SYS_TIMERFD_GETTIME = 321 + SYS_SIGNALFD4 = 322 + SYS_EVENTFD2 = 323 + SYS_INOTIFY_INIT1 = 324 + SYS_PIPE2 = 325 + SYS_DUP3 = 326 + SYS_EPOLL_CREATE1 = 327 + SYS_PREADV = 328 + SYS_PWRITEV = 329 + SYS_RT_TGSIGQUEUEINFO = 330 + SYS_PERF_EVENT_OPEN = 331 + SYS_FANOTIFY_INIT = 332 + SYS_FANOTIFY_MARK = 333 + SYS_PRLIMIT64 = 334 + SYS_NAME_TO_HANDLE_AT = 335 + SYS_OPEN_BY_HANDLE_AT = 336 + SYS_CLOCK_ADJTIME = 337 + SYS_SYNCFS = 338 + SYS_SETNS = 339 + SYS_PROCESS_VM_READV = 340 + SYS_PROCESS_VM_WRITEV = 341 + SYS_S390_RUNTIME_INSTR = 342 + SYS_KCMP = 343 + SYS_FINIT_MODULE = 344 + SYS_SCHED_SETATTR = 345 + SYS_SCHED_GETATTR = 346 + SYS_RENAMEAT2 = 347 + SYS_SECCOMP = 348 + SYS_GETRANDOM = 349 + SYS_MEMFD_CREATE = 350 + SYS_BPF = 351 + SYS_S390_PCI_MMIO_WRITE = 352 + SYS_S390_PCI_MMIO_READ = 353 + SYS_EXECVEAT = 354 + SYS_USERFAULTFD = 355 + SYS_MEMBARRIER = 356 + SYS_RECVMMSG = 357 + SYS_SENDMMSG = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 + SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go new file mode 100644 index 000000000..6ed306370 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -0,0 +1,351 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_VSERVER = 267 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 + SYS_STATX = 360 + SYS_IO_PGETEVENTS = 361 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go new file mode 100644 index 000000000..e66a8c9d3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go new file mode 100644 index 000000000..42c788f24 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go new file mode 100644 index 000000000..0a0757179 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go new file mode 100644 index 000000000..0291c0931 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; DO NOT EDIT. + +// +build arm64,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go new file mode 100644 index 000000000..b0207d1c9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go new file mode 100644 index 000000000..f0dec6f0b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 000000000..33d1dc540 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go new file mode 100644 index 000000000..fe2b689b6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -0,0 +1,217 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 000000000..cedc9b0f2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,345 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type StTimespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint32 + Blocks uint32 + Bfree uint32 + Bavail uint32 + Files uint32 + Ffree uint32 + Fsid Fsid_t + Vfstype int32 + Fsize uint32 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 +} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 000000000..904359f69 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,350 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type StTimespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid64_t + Vfstype int32 + Fsize uint64 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 + _ [4]byte +} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go new file mode 100644 index 000000000..cefe2f8ea --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -0,0 +1,499 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct{} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint32 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + Contigbytes int64 + Devoffset int64 +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go new file mode 100644 index 000000000..c6bb883c3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -0,0 +1,509 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [8]byte + _ [8]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + _ [4]byte + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go new file mode 100644 index 000000000..94c23bc2d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -0,0 +1,500 @@ +// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_darwin.go + +// +build arm,darwin + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 [0]byte + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint32 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + Contigbytes int64 + Devoffset int64 +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go new file mode 100644 index 000000000..c82a930cd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -0,0 +1,509 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [8]byte + _ [8]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + _ [4]byte + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go new file mode 100644 index 000000000..7b34e2e2c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -0,0 +1,469 @@ +// cgo -godefs types_dragonfly.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + Padding1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare1 int64 + Qspare2 int64 +} + +type Statfs_t struct { + Spare2 int64 + Bsize int64 + Iosize int64 + Blocks int64 + Bfree int64 + Bavail int64 + Files int64 + Ffree int64 + Fsid Fsid + Owner uint32 + Type int32 + Flags int32 + _ [4]byte + Syncwrites int64 + Asyncwrites int64 + Fstypename [16]int8 + Mntonname [80]int8 + Syncreads int64 + Asyncreads int64 + Spares1 int16 + Mntfromname [80]int8 + Spares2 int16 + _ [4]byte + Spare [2]int64 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Namlen uint16 + Type uint8 + Unused1 uint8 + Unused2 uint32 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + SizeofIfMsghdr = 0xb0 + SizeofIfData = 0xa0 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + _ [2]byte + Mtu uint64 + Metric uint64 + Link_state uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Oqdrops uint64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Pksent uint64 + Expire uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Recvpipe uint64 + Hopcount uint64 + Mssopt uint16 + Pad uint16 + _ [4]byte + Msl uint64 + Iwmaxsegs uint64 + Iwcapsegs uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = 0xfffafdcd + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go new file mode 100644 index 000000000..c146c1ad3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -0,0 +1,603 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim_ext int32 + Atim Timespec + Mtim_ext int32 + Mtim Timespec + Ctim_ext int32 + Ctim Timespec + Btim_ext int32 + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec + _ [8]byte +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x60 + sizeofIfData = 0x98 + SizeofIfData = 0x50 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + Epoch int32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go new file mode 100644 index 000000000..ac33a8dd4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -0,0 +1,602 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go new file mode 100644 index 000000000..e27511a64 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -0,0 +1,602 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x70 + sizeofIfData = 0x98 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + _ [4]byte + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go new file mode 100644 index 000000000..2aadc1a4d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -0,0 +1,602 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go new file mode 100644 index 000000000..06471afa3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -0,0 +1,2315 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [1]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go new file mode 100644 index 000000000..6bba58ed2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -0,0 +1,2328 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [3]int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go new file mode 100644 index 000000000..07aa92b29 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -0,0 +1,2306 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [4]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Uregs [18]uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]uint8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go new file mode 100644 index 000000000..66dba9aab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -0,0 +1,2307 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go new file mode 100644 index 000000000..b11b77d3b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -0,0 +1,2312 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go new file mode 100644 index 000000000..ccfd9522e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -0,0 +1,2309 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go new file mode 100644 index 000000000..95374fd9b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -0,0 +1,2309 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go new file mode 100644 index 000000000..9d4953daf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -0,0 +1,2312 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go new file mode 100644 index 000000000..a436410d6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -0,0 +1,2317 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go new file mode 100644 index 000000000..dbe32bb30 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -0,0 +1,2317 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go new file mode 100644 index 000000000..774d5c3eb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -0,0 +1,2334 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Pc uint64 + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T0 uint64 + T1 uint64 + T2 uint64 + S0 uint64 + S1 uint64 + A0 uint64 + A1 uint64 + A2 uint64 + A3 uint64 + A4 uint64 + A5 uint64 + A6 uint64 + A7 uint64 + S2 uint64 + S3 uint64 + S4 uint64 + S5 uint64 + S6 uint64 + S7 uint64 + S8 uint64 + S9 uint64 + S10 uint64 + S11 uint64 + T3 uint64 + T4 uint64 + T5 uint64 + T6 uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go new file mode 100644 index 000000000..3b7747ed9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -0,0 +1,2331 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x6 + FADV_NOREUSE = 0x7 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Psw PtracePsw + Gprs [16]uint64 + Acrs [16]uint32 + Orig_gpr2 uint64 + Fp_regs PtraceFpregs + Per_info PtracePer + Ieee_instruction_pointer uint64 +} + +type PtracePsw struct { + Mask uint64 + Addr uint64 +} + +type PtraceFpregs struct { + Fpc uint32 + Fprs [16]float64 +} + +type PtracePer struct { + _ [0]uint64 + _ [32]byte + Starting_addr uint64 + Ending_addr uint64 + Perc_atmid uint16 + Address uint64 + Access_id uint8 + _ [7]byte +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type uint32 + Bsize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen uint32 + Frsize uint32 + Flags uint32 + Spare [4]uint32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go new file mode 100644 index 000000000..c606f4776 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -0,0 +1,2312 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ int16 + _ [2]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [16]uint64 + Tstate uint64 + Tpc uint64 + Tnpc uint64 + Y uint32 + Magic uint32 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x800 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go new file mode 100644 index 000000000..2dae0c17a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -0,0 +1,465 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x84 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData + Pad_cgo_1 [4]byte +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go new file mode 100644 index 000000000..1f0e76c0c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -0,0 +1,472 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go new file mode 100644 index 000000000..53f2159c7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -0,0 +1,470 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + Pad_cgo_0 [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 + Pad_cgo_0 [4]byte +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go new file mode 100644 index 000000000..43da2c41c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -0,0 +1,472 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go new file mode 100644 index 000000000..900fb4462 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -0,0 +1,570 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + X__st_birthtim Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + Pad_cgo_0 [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + X__d_padding [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xec + SizeofIfData = 0xd4 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Pad uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval + Mclpool [7]Mclpool +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct { + Grown int32 + Alive uint16 + Hwm uint16 + Cwm uint16 + Lwm uint16 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Anonpages int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Nanonneeded int32 + Nfreeanon int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Obsolete_swapins int32 + Obsolete_swapouts int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Zeroaborts int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Pdreanon int32 + Pdrevnode int32 + Pdrevtext int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go new file mode 100644 index 000000000..028fa78d7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -0,0 +1,570 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen uint32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Anonpages int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Nanonneeded int32 + Nfreeanon int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Obsolete_swapins int32 + Obsolete_swapouts int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Zeroaborts int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Pdreanon int32 + Pdrevnode int32 + Pdrevtext int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 000000000..b45d5eedf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,571 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go new file mode 100644 index 000000000..fa369a32a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -0,0 +1,564 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go new file mode 100644 index 000000000..8531a190f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -0,0 +1,442 @@ +// cgo -godefs types_solaris.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x400 + MaxHostNameLen = 0x100 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + _ [4]byte + Blocks int64 + Fstype [16]int8 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Sysid int32 + Pid int32 + Pad [4]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Name [1]int8 + _ [5]byte +} + +type _Fsblkcnt_t uint64 + +type Statvfs_t struct { + Bsize uint64 + Frsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fsid uint64 + Basetype [16]int8 + Flag uint64 + Namemax uint64 + Fstr [32]int8 +} + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [236]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *int8 + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Accrights *int8 + Accrightslen int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + X__icmp6_filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x20 + SizeofSockaddrAny = 0xfc + SizeofSockaddrUnix = 0x6e + SizeofSockaddrDatalink = 0xfc + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x24 + SizeofICMPv6Filter = 0x20 +) + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [257]byte + Nodename [257]byte + Release [257]byte + Version [257]byte + Machine [257]byte +} + +type Ustat_t struct { + Tfree int64 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +const ( + AT_FDCWD = 0xffd19553 + AT_SYMLINK_NOFOLLOW = 0x1000 + AT_SYMLINK_FOLLOW = 0x2000 + AT_REMOVEDIR = 0x1 + AT_EACCESS = 0x4 +) + +const ( + SizeofIfMsghdr = 0x54 + SizeofIfData = 0x44 + SizeofIfaMsghdr = 0x14 + SizeofRtMsghdr = 0x4c + SizeofRtMetrics = 0x28 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + _ [1]byte + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + _ [1]byte +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line int8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/modules.txt b/vendor/modules.txt new file mode 100644 index 000000000..c1942d131 --- /dev/null +++ b/vendor/modules.txt @@ -0,0 +1,22 @@ +# github.com/VictoriaMetrics/fastcache v1.5.0 +github.com/VictoriaMetrics/fastcache +# github.com/VictoriaMetrics/metrics v1.4.0 +github.com/VictoriaMetrics/metrics +# github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 +github.com/cespare/xxhash/v2 +# github.com/golang/snappy v0.0.1 +github.com/golang/snappy +# github.com/valyala/bytebufferpool v1.0.0 +github.com/valyala/bytebufferpool +# github.com/valyala/fastjson v1.4.1 +github.com/valyala/fastjson/fastfloat +# github.com/valyala/fastrand v1.0.0 +github.com/valyala/fastrand +# github.com/valyala/gozstd v1.5.0 +github.com/valyala/gozstd +# github.com/valyala/histogram v1.0.1 +github.com/valyala/histogram +# github.com/valyala/quicktemplate v1.1.1 +github.com/valyala/quicktemplate +# golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 +golang.org/x/sys/unix

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 z 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 z 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